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

Swift中如何生成格式为yyyy-MM-dd 00:00:00 +0000的时间字符串?

搞定Swift时间格式化的时区偏移显示问题

嘿,你遇到的这个问题我之前也踩过坑!根源就是你用错了时区的格式符——zzzz是用来显示时区的全称名称的(比如Greenwich Mean Time),而你要的+0000这种数字偏移格式,得换个格式符才行。

给你两个关键点来修正:

  • 把dateFormat里的+zzzz改成Z,这个格式符对应RFC 822标准的数字时区偏移,正好能输出+0000
  • 时区设置其实没问题,不过用TimeZone(secondsFromGMT: 0)来指定UTC时区会更直观,避免缩写可能带来的歧义

修正后的完整代码如下:

let nowDate = Date()
let dateFormatter = DateFormatter()
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss Z"
print(dateFormatter.string(from: nowDate))

顺便给你补几个常用时区格式符的区别,以后格式化时间的时候能少踩坑:

  • z/zz:显示时区缩写(比如GMT)
  • zzz/zzzz:显示时区完整名称(比如Greenwich Mean Time)
  • Z:输出数字格式的时区偏移(比如+0000、-0800)
  • ZZZZ:输出带冒号的本地化偏移(比如GMT+00:00)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:10:13