Detecto el siguiente resultado cuando convierto un Instant que está muy lejos en el pasado en ZonedDateTime.
Código como prueba unitaria:
@Test public void testParseDate() { Instant instant = Instant.parse("0000-12-30T07:00:00Z"); System.out.println(instant); System.out.println(instant.atZone(ZoneId.of("Europe/Berlin"))); instant = Instant.parse("1800-12-30T07:00:00Z"); System.out.println("---------------------------------"); System.out.println(instant); System.out.println(instant.atZone(ZoneId.of("Europe/Berlin"))); instant = Instant.parse("1900-12-30T07:00:00Z"); System.out.println("---------------------------------"); System.out.println(instant); System.out.println(instant.atZone(ZoneId.of("Europe/Berlin"))); }Producción:
0000-12-30T07:00:00Z 0000-12-30T07:53:28+00:53:28[Europe/Berlin] --------------------------------- 1800-12-30T07:00:00Z 1800-12-30T07:53:28+00:53:28[Europe/Berlin] --------------------------------- 1900-12-30T07:00:00Z 1900-12-30T08:00+01:00[Europe/Berlin]En las dos primeras salidas la hora es 07:53:28+00:53:28 y la última salida es 08:00+01:00[Europa/Berlín]. Tal vez la causa principal es que la zona horaria aún no existe en los años de los dos primeros ejemplos, pero el desplazamiento de +00:53:28 es realmente extraño. ¿Alguna idea de dónde viene este desplazamiento "+00:53:28"?
Porque la historia .
El 1 de abril de 1893, la zona horaria se ajustó de la hora media local (LMT), una zona horaria local (que era común en ese momento), a la hora de Europa Central (CET), ajustando el reloj en 6 minutos y 32 segundos.
Las zonas horarias se cambian regularmente debido a decisiones políticas, pero esas cantidades extrañas como 6 minutos y 32 segundos a menudo son el resultado de pasar de una hora media local a una hora estandarizada.
Muchos cambios históricos conocidos se encuentran en timeanddate.com , y Berlín específicamente en https://www.timeanddate.com/time/zone/germany/berlin .
Las zonas horarias, el horario de verano y todas esas características molestas y elegantes no existían a principios del siglo XX.
Había muchas "variaciones" de la hora, como la infame hora holandesa , que estaba unos 19 minutos por delante de la hora UTC, principalmente basada en el reloj de una torre que tenía simplemente esa cantidad de tiempo por delante.
No sé exactamente de dónde viene la diferencia horaria en el caso de Alemania y Berlín, pero es un desplazamiento conocido (probablemente basado en razones similares a la hora holandesa).
Puedes vercómo ha evolucionado con el tiempo.