Uso la nuova implementazione java.time
di Java 8, una meraviglia sull'output di un risultato di conversione dell'ora da UTC a CET.java.time: il fuso orario CET considera l'ora legale?
ZonedDateTime utcTime = ZonedDateTime.of(2014, 7, 1, 8, 0, 0, 0, ZoneId.of("UTC"));
ZonedDateTime cetTime = ZonedDateTime.ofInstant(utcTime.toInstant(), ZoneId.of("CET"));
System.out.println("Summer-UTC-Time: " + utcTime);
System.out.println("Summer-CET-Time: " + cetTime);
System.out.println();
utcTime = ZonedDateTime.of(2014, 1, 1, 8, 0, 0, 0, ZoneId.of("UTC"));
cetTime = ZonedDateTime.ofInstant(utcTime.toInstant(), ZoneId.of("CET"));
System.out.println("Winter-UTC-Time: " + utcTime);
System.out.println("Winter-CET-Time: " + cetTime);
mi aspettavo che il tempo CET sarebbe sempre uno del tempo UTC, ma invece ho ottenuto:
Summer-UTC-Time: 2014-07-01T08:00Z[UTC]
Summer-CET-Time: 2014-07-01T10:00+02:00[CET] -> +2 **Unexpected**
Winter-UTC-Time: 2014-01-01T08:00Z[UTC]
Winter-CET-Time: 2014-01-01T09:00+01:00[CET] -> +1 Expected
Quindi a quanto pare ho a che fare con l'ora legale, che non mi aspettavo quando usando CET. È il java.time
CET in verità CEST? E se sì, quale zona dovrei usare se ho bisogno del CET?
'CET' non è identico a' UTC + 1', almeno, come il database dei fusi orari IANA lo definisce. E questo è ciò che usano Java, POSIX e diversi fornitori di database. – Holger
@Holger Il tuo commento "CET non è identico a UTC + 1" sembra essere la risposta più corretta - sebbene il riferimento [wiki] (http://en.wikipedia.org/wiki/Central_European_Time) documenti un offset UTC fisso di +1 (+2 sarebbe CEST nelle regioni con DST). Ho dato una rapida occhiata a IANA ma questo non mi ha aiutato a capire la loro definizione. Tuttavia se aggiungete il vostro commento come risposta (magari fornendo qualche informazione di più) lo accetterei. – FrVaBe