Swift - 如何让 NSTimeZone 给我 "Pacific Standard Time" 或 "Mountain Time" 等?

Swift - How do I get an NSTimeZone to give me "Pacific Standard Time" or "Mountain Time" etc?

我正在使用的 API 给了我像“America/Vancouver”这样的名字。我用它来构造一个 NSTimeZone 并获得缩写,但是当我想要“太平洋夏令时”或“PDT”时它是“UTC-7”。

我怎样才能进入这个区域?而不是危险区域。

您可以使用 TimeZone 方法 localizedName(for: locale:) 来显示本地化的时区名称。您只需要传递名称样式夏令时或标准。如果您需要缩写,只需传递我在 :

中显示的短夏令时或短标准
extension TimeZone {
    static let vancouver = TimeZone(identifier: "America/Vancouver")!
    func localizedName(for date: Date = Date()) -> String { localizedName(for: isDaylightSavingTime(for: date) ? .daylightSaving : .standard, locale: .current) ?? "" }
    func localizedNameShort(for date: Date = Date()) -> String { localizedName(for: isDaylightSavingTime(for: date) ? .shortDaylightSaving : .shortStandard, locale: .current) ?? "" }
}

用法:

TimeZone.vancouver.localizedName()        // "Pacific Daylight Time"
TimeZone.vancouver.localizedNameShort()   // "PDT"