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
相关产品推荐
相关产品推荐

