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

iOS DateFormatter转换指定日期字符串的正确dateFormat是什么?

iOS DateFormatter 对应日期格式解答

正确的dateFormat取值

你需要的日期格式为 yyyy-MM-dd'T'HH:mm:ss.SSSZ

格式各部分对应含义

  • yyyy:4位公历年,匹配示例中的 2021
  • MM:2位月份,匹配示例中的 09
  • dd:2位日期,匹配示例中的 10
  • 'T':原样匹配字符串中的固定分隔符T,加单引号是避免字符被识别为格式占位符
  • HH:24小时制的2位小时数,匹配示例中的 12
  • mm:2位分钟数,匹配示例中的 57
  • ss:2位秒数,匹配示例中的 01
  • SSS:3位毫秒数,匹配你困惑的.671部分,注意必须为大写S,小写s对应秒的占位符
  • Z:匹配时区标识,对应示例末尾的Z(代表UTC时区),无需加单引号包裹。如果确认后端固定返回UTC时区的Z标识,也可以将格式改为 yyyy-MM-dd'T'HH:mm:ss.SSS'Z',同时补充配置 formatter.timeZone = TimeZone(secondsFromGMT: 0) 即可,解析效果一致。

常见解析失败注意事项

大多数人配置了正确格式仍解析失败,是因为没有为DateFormatter设置固定的本地化标识,避免设备系统的语言、时区、时间制式设置影响解析结果,必须补充如下配置:
dateFormatter.locale = Locale(identifier: "en_US_POSIX")

完整代码示例

let dateStr = "2021-09-10T12:57:01.671Z"
let formatter = DateFormatter()
// 固定本地化标识,不受系统设置影响
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
let targetDate = formatter.date(from: dateStr)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:18:03