2015-05-04 6 views
5

Utilizzando Java 8java.time.LocalDate, si può calcolare Capodanno cinese data?Utilizzando Java 8 java.time.LocalDate, è possibile calcolare la data di Capodanno cinese?

+0

Vedere anche questo [problema JDK] (https://bugs.openjdk.java.net/browse/JDK-4609228). Per stabilire le tue aspettative, suppongo che il supporto per un calendario lunare cinese non arriverà mai in Java standard. –

+0

Se potessi rispondere alla tua domanda, ti dispiacerebbe accettarlo? Grazie! – camiblanch

risposta

1

Probabilmente no.

Il Oracle Documentation indica che questa funzione utilizza il sistema di calendario gregoriano. Il capodanno cinese si basa sul calendario cinese e sul calendario lunare. (Source)

0

Certamente non possibile senza una libreria esterna perché Java standard non contiene un calendario cinese. Il calcolo del capodanno cinese richiede complessi calcoli astronomici, e lo standard Java non ha nemmeno il supporto di astronomia.

Come soluzione alternativa, utilizzare la mia libreria Time4J (v4.35) e poi scrivere codice seguente:

LocalDate gregorian = LocalDate.now(ZoneId.of("Asia/Shanghai")); 
ChineseCalendar cc = ChineseCalendar.ofNewYear(gregorian.getYear()); 
LocalDate newYearAsGregorian = cc.transform(PlainDate.axis()).toTemporalAccessor(); 

System.out.println(
    newYearAsGregorian); // 2018-02-16 

System.out.println(
    "Year of the " 
     + cc.get(ChineseCalendar.YEAR_OF_CYCLE).getZodiac(Locale.ENGLISH)); 
// Year of the Dog 

Per maggiori dettagli, si veda anche il API.

Problemi correlati