Swift中Timestamp转换为Date结果错误,请求代码排查
问题分析与解决方案
你的问题核心是时间戳单位不匹配!
Date(timeIntervalSince1970:)这个初始化方法要求传入的是从1970年1月1日0点开始计算的秒数,但你用的1524637838000.0是毫秒数(比秒级多了3个零)。相当于把时间直接放大了1000倍,自然得到了5万多年后的离谱日期。
修正后的代码
只需要把毫秒级时间戳除以1000.0,转换成秒级即可:
let timestamp = 1524637838000.0 let date = Date(timeIntervalSince1970: timestamp / 1000.0) // 关键:转成秒级时间戳 let dateFormatter = DateFormatter() dateFormatter.dateFormat = "dd-MM-yyyy hh:mm" // 可选:如果要和在线转换器时区完全匹配,比如UTC,可以添加这行 // dateFormatter.timeZone = TimeZone(identifier: "UTC") let myDate = dateFormatter.string(from: date) print("Date is = ", myDate)
额外提示
- 在线转换器默认可能用UTC时区,如果你本地时区和UTC不同,转换结果可能会有小时差。想要完全匹配在线结果,记得给
dateFormatter设置对应时区。 - 另外
hh是12小时制格式,如果需要24小时制显示,要改成HH。
内容的提问来源于stack exchange,提问作者user6788419
相关产品推荐
相关产品推荐

