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"
我正在使用的 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"