从技术上讲,UTC和GMT之间有微小的差异, 但API的设计者认为它们实际上是相同的(事实上也确实如此),所以他们做到了这一点:
TimeZone(identifier: "UTC") == TimeZone(identifier: "GMT")
DateFormatter
:let formatter = DateFormatter()
formatter.timeZone = TimeZone(identifier: "UTC")
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss 'UTC'"
print(formatter.string(from: Date()))
或者更好的方法是使用ISO8601DateFormatter
,它会在日期末尾添加一个Z
表示日期时间为UTC:
let formatter = ISO8601DateFormatter()
formatter.timeZone = TimeZone(identifier: "UTC")
print(formatter.string(from: Date()))
在一些设备上,若只设置协调世界时(UTC)可能无法正常工作,此时可考虑使用该选项。
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
let date = dateFormatter.date(from: "2020-01-23T11:55:00.000Z")
我也在那里,根据谷歌
协调世界时(UTC)和格林威治标准时间(GMT)之间没有时间差异
换句话说,GMT基本上等同于UTC,所以你已经有了它!
偏移量为0
是指相对于UTC/GMT的时区偏移量为0,如果您在EST(取决于是否以分钟、小时、毫秒等为单位),则可能是240。
第二行的fixed
表示它是GMT,偏移数据可能是不变的。我不知道没有打开playground,但我会尝试在实例化后更改时区并查看偏移量是否可以在分配后更改。
GMT (GMT) offset 0
时区的? - Sweeper