iOS TimeZone получит трехбуквенное сокращение - PullRequest
1 голос
/ 23 октября 2019

Мне нужно получить трех / четырехбуквенное сокращение для страны под названием 'Африка / Найроби' , я пытался использовать

print(TimeZone(abbreviation: "SAST")?.identifier) из NSTimeZone.abbreviationDictionary, результаты nil.

Как получить трех / четырехбуквенные сокращения для этой страны 'Африка / Найроби' . Заранее спасибо

1 Ответ

2 голосов
/ 23 октября 2019

Полное стандартное локализованное имя часового пояса можно получить следующим способом:

let timezone:TimeZone = TimeZone.init(identifier: "Africa/Nairobi") ?? TimeZone.current
print(timezone.localizedName(for: .generic, locale: .autoupdatingCurrent))
print(timezone.localizedName(for: .standard, locale: .autoupdatingCurrent))

Будет выдан следующий вывод

Необязательно ("Время Восточной Африки")

Необязательно ("Восточноафриканское время")

Думаю, теперь вы легко получите ЕСТ из Восточноафриканского времени, разбив и объединив строку

let fullName = timezone.localizedName(for: .standard, locale: .autoupdatingCurrent) ?? ""
var result = ""
fullName.enumerateSubstrings(in: fullName.startIndex..<fullName.endIndex, options: .byWords) { (substring, _, _, _) in
    if let substring = substring { result += substring.prefix(1) }
}
print(result)

ДастВы положили

ЕСТЬ

...