#swift #calendar
#swift #Календарь
Вопрос:
Я работаю над пользовательским календарем в своем приложении. Я заметил, что в японском календаре есть несколько лет, которые не являются числами (это скриншот из календаря Apple)
Прямо сейчас у меня есть этот код:
let year = Calendar(identifier: .japanese).component(.year, from: Date())
print("Current year: (year)")
Но результат этого кода таков Current year: 2
.
Я хотел знать, как я могу получить год в виде локализованной строки вместо чисел, поэтому «2 Reiwa» вместо 2.
Спасибо
Комментарии:
1.
component(.year, from: Date())
возвращает anInt
, что нормально для получения значения типа «2». Используйте aDateForamtter
для полученияString
изDate
s.
Ответ №1:
Это название эпохи, точно так же, как AD / BC в григорианском календаре.
Для его указания можно использовать спецификатор G
формата:
let f = DateFormatter()
f.calendar = Calendar(identifier: .japanese)
f.dateFormat = "G y"
f.string(from: Date()) // Reiwa 2
Вы также можете получить его с помощью component(_:from:)
:
Calendar(identifier: .japanese).component(.era, from: Date())
Но вы получите довольно нечитаемое человеком число 236
, поэтому вам следует придерживаться DateFormatter
.