2015-03-12 5 views
30

La documentazione DateTimeFormatter classe definisce simboli separati u per l'anno e y anno-su-era: https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#patternsQual è la differenza tra anno e anno dell'era?

Qual è la differenza tra anno e anno-di-era?

+0

http://stackoverflow.com/questions/26431882/difference-between-year di-anno-e-settimana-anno –

+0

@DonLarynx Sì. C'è anche un terzo simbolo Y per anno-settimana. Conosco la motivazione per questo. Ma questo non risponde alla mia domanda sulla differenza tra te e te. – glerup

risposta

30

La risposta sta nella documentazione per IsoChronology

  • epoca - Ci sono due epoche, 'Corrente Era' (CE) e 'Prima di epoca attuale' (BCE).
  • year-of-era - L'anno dell'era è lo stesso dell'anno proletico per l'attuale era CE. Per l'era della BCE prima dell'epoca ISO l'anno aumenta da 1 in su mentre il tempo scorre indietro.
  • proleptic-year - L'anno prolettico è lo stesso dell'anno dell'era attuale. Per l'era precedente, gli anni hanno zero, quindi valori negativi.

u ti darà l'anno prolifico. ti darà l'anno dell'era.

La differenza è importante soprattutto per anni dell'era BC. L'anno prolettoriale 0 è in realtà 1 aC, è seguito dall'anno proletico 1 che è 1 AD. L'anno prolettico può essere negativo, l'anno dell'era non può.

Ecco un frammento che vi aiuterà a visualizzare come funziona:

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

uscita:

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 
+0

Grazie. Ho trovato ulteriori discussioni qui: http://docs.oracle.com/javase/8/docs/api/java/time/chrono/ChronoLocalDate.html http://docs.oracle.com/javase/8/docs/api /java/time/temporal/ChronoField.html#YEAR_OF_ERA – glerup

+4

Anche le altre cronologie possono avere le loro ere, in particolare [JapaneseChronology] (https://docs.oracle.com/javase/8/docs/api/java/time/ crono/JapaneseChronology.html) –