Pregunta ¿Cuál es la diferencia entre el año y el año de la era?


los DateTimeFormatter la documentación de clase define símbolos separados u por año y y año-de-era: https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#patterns

¿Cuál es la diferencia entre el año y el año de la era?


32
2018-03-12 15:45


origen


Respuestas:


La respuesta está en la documentación para IsoCronología

  • era - Hay dos eras, 'Era actual' (CE) y 'Antes de la era actual' (BCE).
  • año-de-era - El año de la era es el mismo año proleptico para la era actual de CE. Para la era BCE anterior a la época ISO, el año aumenta de 1 en adelante a medida que pasa el tiempo.
  • año proleptico: el año proleptico es el mismo que el año de la era actual. Para la era anterior, los años tienen valores cero, luego negativos.

u le dará el año proléptico. y te dará el año de la era.

La diferencia es principalmente importante para los años de la era BC. El año 0 proleptico es en realidad 1 BC, es seguido por el año 1 proleptic que es 1 AD. El año proléptico puede ser negativo, el año de la era no.

Aquí hay un fragmento que ayudará a visualizar cómo funciona:

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));
}

Salida:

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

32
2018-03-12 16:00