You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Swift中如何将Unix Epoch毫秒级时间戳转换为Date

Swift 毫秒级Unix时间戳字符串转Date类型方法

核心逻辑

Swift 原生Date的init(timeIntervalSince1970:)方法要求传入秒级的TimeInterval(Double类型)参数,而你拿到的是毫秒级的字符串时间戳,所以需要先做两步转换:

  1. 将字符串转换为数值类型
  2. 将毫秒值除以1000转换为秒级时间戳

安全实现代码

let val = "1492495200000"

// 安全转换字符串为Double,避免强制解包崩溃
guard let milliTimestamp = Double(val) else {
    // 此处自定义处理字符串格式非法的场景
    print("无效的时间戳格式")
    // return 或者抛出错误都可
    fatalError()
}

// 毫秒转秒后生成Date实例
let targetDate = Date(timeIntervalSince1970: milliTimestamp / 1000)

结果验证示例(可选)

如果需要验证转换结果是否正确,可以用DateFormatter转为可读时间:

let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
// 按需设置时区,这里设置为东八区
formatter.timeZone = TimeZone(secondsFromGMT: 8 * 3600)
print(formatter.string(from: targetDate)) // 输出:2017-04-18 14:00:00

注意事项

  • 不要用Int类型接收时间戳值:32位设备上Int最大值仅支持到2038年的秒级时间戳,用Double可以规避2038年问题
  • 不要忘记除以1000:如果直接传入毫秒值,生成的Date会是远在未来的错误时间

内容的提问来源于stack exchange,提问作者Ricardo Guerrero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 14:06:06