gpt4 book ai didi

Swift UTC 时区不是 UTC

转载 作者:搜寻专家 更新时间:2023-11-01 06:24:52 31 4
gpt4 key购买 nike

我有一个关于 Swift 类型 TimeZone 的问题。我需要一个 UTC0 时区来格式化我的 Date 对象。我正在像这样创建 TimeZone 对象。

let utcTimeZone = TimeZone(abbreviation: "UTC")

但是当创建这个对象时,我会得到 GMT0 时区。这有可能在 Swift 中获得 UTC0 时区吗?另外 GMT (fixed)GMT (GMT) offset 0 在 Playground 上有什么区别?

Xcode 10.3 Playground enter image description here

最佳答案

从技术上讲,有really subtle differences在 UTC 和 GMT 之间(GMT 可能表示 UT1),但 API 的设计者认为它们实际上是相同的(它们确实是),因此他们实现了这一点:

TimeZone(identifier: "UTC") == TimeZone(identifier: "GMT")

它们都代表一个偏移量为 0 的时区。

如果您只想在某些输出文本中显示字母“UTC”,请使用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()))

Also what is the difference between GMT (fixed) and GMT (GMT) offset 0 in playground?

前者来自于Swift的TimeZone类,后者来自于Objective-C的NSTimeZone类。一个是另一个的桥接版本。来自docs NSTimeZone,

use NSTimeZone when you need reference semantics or other Foundation-specific behavior.

关于Swift UTC 时区不是 UTC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58307194/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com