Метод withChronology

Метод withChronology класса DateTimeFormatter устанавливает хронологию для форматтера. В параметр мы передаем объект хронологии, который определяет календарную систему для работы с датами.

Импорт

kotlinimport java.time.format.DateTimeFormatter
import java.time.chrono.Chronology
import java.time.chrono.JapaneseChronology
import java.time.chrono.IsoChronology

Синтаксис

kotlinfun withChronology(chrono: Chronology?): DateTimeFormatter

Пример

Используем ISO хронологию по умолчанию для форматирования даты:

kotlinval formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd")
  .withChronology(IsoChronology.INSTANCE)

val date = java.time.LocalDate.of(2025, 12, 31)
val formatted = formatter.format(date)
println(formatted)

Результат выполнения кода:

kotlinString "2025-12-31"

Пример

Создадим форматтер без хронологии (null) и сравним с форматтером с ISO хронологией:

kotlinval formatterWithoutChrono = DateTimeFormatter.ofPattern("yyyy-MM-dd")
  .withChronology(null)

val formatterWithChrono = DateTimeFormatter.ofPattern("yyyy-MM-dd")
  .withChronology(IsoChronology.INSTANCE)

val date = java.time.LocalDate.of(2025, 12, 31)

val result1 = formatterWithoutChrono.format(date)
val result2 = formatterWithChrono.format(date)

println("Without chronology: $result1")
println("With ISO chronology: $result2")

Результат выполнения кода:

kotlinString "Without chronology: 2025-12-31"
String "With ISO chronology: 2025-12-31"

Пример

Создадим форматтер с японской хронологией для парсинга дат в японском календаре:

kotlinval formatter = DateTimeFormatter.ofPattern("GGGG y年 M月 d日")
  .withChronology(JapaneseChronology.INSTANCE)

val dateStr = "令和 7年 12月 31日"
val temporal = formatter.parse(dateStr)
println(temporal)

Результат выполнения кода:

kotlinString "{JapaneseEra=Heisei, YearOfEra=7, MonthOfYear=12, DayOfMonth=31},ISO"

Смотрите также

  • функцию ofPattern класса DateTimeFormatter,
    которая создает форматтер по шаблону
  • функцию withZone класса DateTimeFormatter,
    которая устанавливает часовой пояс для форматтера
  • функцию withLocale класса DateTimeFormatter,
    которая устанавливает локаль для форматтера
  • класс JapaneseDate,
    который представляет дату в японском календаре