web-dev-qa-db-fra.com

Quelle est la différence entre l'année et l'année de l'ère?

La documentation de la classe DateTimeFormatter définit des symboles distincts u pour l'année et y l'année de l'ère: https://docs.Oracle.com/javase/8 /docs/api/Java/time/format/DateTimeFormatter.html#patterns

Quelle est la différence entre l'année et l'année de l'ère?

53
glerup

La réponse réside dans la documentation de IsoChronology

  • ère - Il y a deux époques, "l'ère actuelle" (CE) et "avant l'ère actuelle" (BCE).
  • année de l'ère - L'année de l'ère est la même que l'année proleptique pour l'ère CE actuelle. Pour l'ère BCE avant l'ère ISO, l'année augmente de 1 vers le haut à mesure que le temps recule.
  • année proleptique - L'année proleptique est la même que l'année de l'ère pour l'ère actuelle. Pour l'ère précédente, les années ont zéro, puis des valeurs négatives.

u vous donnera l'année proleptique. y vous donnera l'année de l'ère.

La différence est principalement importante pour les années de l'ère de la Colombie-Britannique. L'année proleptique 0 est en fait 1 BC, elle est suivie de l'année proleptique 1 qui est 1 AD. L'année proleptique peut être négative, l'année de l'ère ne peut pas.

Voici un extrait qui vous aidera à visualiser comment cela fonctionne:

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

Sortie:

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
55
bowmore