我想从一个字符串初始化一个DateFormatter().timeZone,但是当我这样做的时候
let dateFormatter = DateFormatter()
dateFormatter.timeStyle = .short
dateFormatter.timeZone = TimeZone(abbreviation: "America/New_York")
dateFormatter.string(from: Date()) // I just get my local time printed但如果我这么做了
let dateFormatter = DateFormatter()
dateFormatter.timeStyle = .short
dateFormatter.timeZone = TimeZone(secondsFromGMT : -14400) // should be same "America/New_York"
dateFormatter.string(from: Date()) // Now I get proper New York Time这是一个bug,还是我没有做对什么?
发布于 2020-04-24 09:26:34
"America/New_York"不是TimeZone的缩写-它是一个标识符。TimeZone(abbreviation: "America/New_York")返回nil,因此第一个示例返回到系统的时区,这是DateFormatter的默认时区。
使用以下两种方法:
TimeZone(identifier: "America/New_York")或者这些缩写之一:
TimeZone(abbreviation: "EDT")
TimeZone(abbreviation: "EST")纽约时区。
您还可以在TimeZone上使用这些静态方法打印所有已知的时区标识符和缩写
print(TimeZone.knownTimeZoneIdentifiers)
print(TimeZone.abbreviationDictionary)https://stackoverflow.com/questions/61399487
复制相似问题