Получение японского названия года из календаря

#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()) возвращает an Int , что нормально для получения значения типа «2». Используйте a DateForamtter для получения 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 .