pocket edition dinnerbone anlyticsed java json jackson orika spring-restcontroller

java - edition - minecraft wiki



perdido un día por una cita (1)

En el lado del cliente, uso el formato de fecha dd / MM / aaaa. El campo usa un selector de fecha y hora de twitter bootstrap 3 ( https://eonasdan.github.io/bootstrap-datetimepicker/ )

Ingresé vía Twitter bootstrap 3 datetime picker 24/07/2015
en mi json envié, veo: fecha de nacimiento: "24/07/2015"

En mi dto, lo hago

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy") private Date birthdate;

Cuando recibo la fecha en el servidor, en mi lugar veo: 23/07/2015 19:00

Un día está perdido.

¿Alguna explicación?


De acuerdo con la página de JacksonFAQDateHandling :

Todos los objetos de tiempo asociados con TimeZone (java.util.Calendar, etc.) que Jackson construye utilizan la zona horaria estándar (GMT), no la zona horaria local (cualquiera que sea). Es decir: Jackson usa GMT por defecto para todo el procesamiento, a menos que se especifique lo contrario.

En su caso, parece que la fecha se está convirtiendo automáticamente a GMT / UTC. Intente proporcionar su zona horaria local de forma explícita para evitar la conversión UTC [como se menciona en la pregunta ¿Cómo es posible que este tiempo esté desactivado antes de las 9 horas? (5 horas, 3 horas, etc.) en la misma página]:

@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="dd/MM/yyyy", timezone="EST")

En segundo lugar, creo que estás usando Date.toString() para imprimir la fecha. Tenga en cuenta que java Date class es independiente de la zona horaria pero su método toString() usa la zona horaria predeterminada del sistema antes de imprimir.

Aquí parece que 24/07/2015 00:00 UTC se está convirtiendo al 23/07/2015 19:00 EST por toString() . Ambos representan el mismo momento pero en diferentes zonas horarias.