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

使用DateFormatter解析Timestamp时的正确日期格式问题

解决ISO8601时间戳解析失败的问题

嗨,我来帮你搞定这个日期解析的小问题~你遇到的问题主要出在格式符号的匹配错误上,具体来说有两个核心问题:

1. 小时格式符号用错了

你写的k是12小时制的小时标识(范围是1-12),但你的时间戳里的06是24小时制的小时数,这就导致解析器无法识别这个时间。正确的24小时制小时符号应该是HH(范围00-23)。

2. 时区符号不匹配

时间戳末尾的Z代表UTC时区,你用的Z格式符号对应的是±HHmm这种偏移格式(比如+0800),根本匹配不上单独的Z。这里得换成X,它专门用来匹配ISO 8601标准的时区标识(包括Z、±HH:mm或者±HHmm)。

另外还有个关键细节:一定要给DateFormatter设置en_US_POSIX的locale,不然系统的区域设置可能会干扰ISO8601格式的解析,导致莫名其妙的失败。

修正后的完整代码

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSX"
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
let date = dateFormatter.date(from: "2018-03-06T06:28:39.887Z")

这样修改之后,应该就能成功解析你的时间戳啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:01:34