Utilizzando Java 8java.time.LocalDate
, si può calcolare Capodanno cinese data?Utilizzando Java 8 java.time.LocalDate, è possibile calcolare la data di Capodanno cinese?
5
A
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.
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. –
Se potessi rispondere alla tua domanda, ti dispiacerebbe accettarlo? Grazie! – camiblanch