Подтвердить что ты не робот

В чем разница между годом и эпохой?

Документация класса DateTimeFormatter определяет отдельные символы u для года и y по годам: https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#patterns

В чем разница между годом и эпохой?

4b9b3361

Ответ 1

Ответ лежит на документации IsoChronology

  • эпоха - Есть две эпохи: "Текущая эра" (CE) и "До текущей эры" (BCE).
  • год - эпоха - год эры такой же, как и пролептический год для нынешней эпохи CE. Для эпохи BCE до эпохи ISO год увеличивается с 1 вверх по мере того, как время идет назад.
  • proleptic-year - Пролептический год - это то же самое, что и в эпоху нынешней эпохи. Для предыдущей эры годы имеют ноль, затем отрицательные значения.

u даст вам пролептический год. y даст вам год эры.

Разница в основном важна для лет эры БК. Пролептический год 0 на самом деле 1 до н.э., за ним следует пролептический год 1, который составляет 1 AD. Пролептический год может быть отрицательным, год эры не может.

Вот фрагмент, который поможет визуализировать, как он работает:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("'proleptic' : u '= era:' y G");

for (int i = 5; i > -6 ; i--) {
    LocalDate localDate = LocalDate.of(i, 3, 14);
    System.out.println(formatter.format(localDate));
}

Вывод:

proleptic : 5 = era: 5 AD
proleptic : 4 = era: 4 AD
proleptic : 3 = era: 3 AD
proleptic : 2 = era: 2 AD
proleptic : 1 = era: 1 AD
proleptic : 0 = era: 1 BC
proleptic : -1 = era: 2 BC
proleptic : -2 = era: 3 BC
proleptic : -3 = era: 4 BC
proleptic : -4 = era: 5 BC
proleptic : -5 = era: 6 BC