Swift中通过时间戳创建Date对象结果不符合预期的问题
问题分析与解决
- 核心问题:你传入的
1670841300000是毫秒级时间戳,但Swift中Date(timeIntervalSince1970:)和Date(timeIntervalSinceReferenceDate:)这两个初始化方法,要求传入的是秒级时间戳,直接传毫秒会导致计算出的时间严重偏离预期。 - 修正后的代码:将毫秒时间戳除以1000转换为秒级,同时注意你用的是基于1970年的时间戳,应该使用
timeIntervalSince1970初始化方法:
let timestampInSeconds = 1670841300000 / 1000 let date = Date(timeIntervalSince1970: TimeInterval(timestampInSeconds))
- 额外说明:
timeIntervalSinceReferenceDate的参考基准是2001年1月1日00:00:00 UTC,和你用的epoch工具基于1970年的基准不一致,所以不要混用这个方法来匹配你的预期时间。
内容的提问来源于stack exchange,提问作者Zin Win Htet
相关产品推荐
相关产品推荐

