hat einen Tag für ein Datum verloren

9

Auf der Client-Seite verwende ich das TT / MM / JJJJ-Datumsformat. Das Feld verwendet einen Datetime-Picker von twitter bootstrap 3 ( Ссылка )

Ich gebe via twitter bootstrap 3 datetime picker 24/07/2015
ein In meinem JSON sendete ich: Geburtsdatum: "24/07/2015"

In meinem dto mache ich

%Vor%

Wenn ich das Datum auf dem Server erhalte, sehe ich: 23/07/2015 19:00

Ein Tag ist verloren.

Jede Erklärung?

    
robert trudel 25.07.2015, 02:27
quelle

1 Antwort

8

Laut JacksonFAQDateHandling Seite:

  

Alle Zeitobjekte, die TimeZone zugeordnet haben (java.util.Calendar   etc), die Jackson konstruiert verwenden die Standardzeitzone (GMT), nicht die   lokale Zeitzone (was auch immer das sein mag). Das heißt: Jackson ist standardmäßig   Verwendung von GMT für alle Verarbeitungen es sei denn wird ausdrücklich anders angegeben.

In Ihrem Fall sieht es so aus, als ob das Datum automatisch in GMT / UTC konvertiert wird. Versuchen Sie, Ihre lokale Zeitzone explizit anzugeben, um die UTC-Konvertierung zu vermeiden [wie in der Frage erwähnt] Wie kommt es, dass diese Zeit um 9 Stunden abgelaufen ist? (5 Stunden, 3 Stunden usw.) auf derselben Seite]:

%Vor%

Zweitens glaube ich, dass Sie Date.toString() verwenden, um das Datum zu drucken. Hinweis , dass die Klasse Java Date unabhängig von der Zeitzone ist, aber die Methode toString() verwendet die Zeitzone Standard des Systems vor dem Drucken.

Hier sieht es so aus, als ob 24/07/2015 00:00 UTC in 23/07/2015 19:00 EST von toString() konvertiert wird. Beide repräsentieren das gleiche Moment der Zeit, aber in verschiedenen Zeitzonen.

    
AimZ 27.07.2015 16:22
quelle