Inconsistencias de la zona horaria en la conversión de XMLGregorianCalendar a LocalDateTime

Entonces tengo una respuesta XML Soap con campos de fecha / hora, que se representan de la siguiente manera:

<BusStopTime>
    <BusStopId>1023</BusStopId>
    <Order>1</Order>
    <PassingTime>1899-12-30T07:20:00</PassingTime>
</BusStopTime>

No me interesa la fecha (ya que esta es una representación heredada sobre la que no tengo control), sino la hora. Las XMLGregorianCalendarherramientas de WS transforman el campo y estoy intentando hacer la conversión.

var date = DatatypeFactory.newInstance()
    .newXMLGregorianCalendar("1899-12-30T07:20:00")
    .toGregorianCalendar().toInstant()

La conversión a LocalDateTimees siLocalimple. Estoy configurando TimeZone explícitamente para evitar la confusión de la localidad

LocalDateTime.ofInstant(date, ZoneId.of("Europe/Warsaw"))

lo que resulta en 1899-12-30T07: 44

LocalDateTime.ofInstant(date, ZoneId.of("Europe/Berlin"))

me da una salida diferente 1899-12-30T07: 20

Cuando las fechas comienzan en los días modernos (después de 1900 y después), todo funciona bien. Entonces la pregunta es: ¿qué sucedió exactamente entre Berlín y Varsovia en el cambio del siglo XIX? O para decirlo más claramente: ¿por qué el cambio en el tiempo es tan extraño ?

Estoy corriendo tanto en JDK8 como en JDK11 (observando el mismo comportamiento)

{ ~ }  » java -version                                                                                                                                              
openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment 18.9 (build 11.0.1+13)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13, mixed mode)

java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
Respuesta 1

Tengo una aplicación Spring MVC con todo lo que actualmente está contenido en un solo contexto de aplicación en una sola JVM. El código se divide en varias capas, y cada capa simplemente tira del ...

Tengo algunas líneas dentro de mi application.properties como logging.level.com.website.project.mapper = INFO Quiero ver dónde se usa realmente este valor para comprender todo al respecto. ¿Puede IntelliJ ...

He estado buscando formas de tener un pequeño retraso entre las pulsaciones de teclas. He estado haciendo este programa que lee teclas rápidas globales usando la biblioteca JIntellitype, y luego dispara lo que sea ...

Tengo una aplicación web Java EE. Ahora, cuando llega una solicitud en particular (digamos / xyz url patter), quiero hacer un procesamiento complejo de la siguiente manera: Cada uno de los siguientes 3 pasos es muy complejo y lleva tiempo. ...