2017-09-22 5 views
0

Ich habe einen Java-Client, der (über eine CSV und 'LOAD DATA INFILE') Zeitstempel (Typ TIMESTAMP) im UTC-Format in einer MySQL DB einfügt. Die Zeitzone meines Servers ist "America/New_York" und ich muss die Sommerzeit-Informationen speichern. Am 5. November um 2:00 Uhr ändert sich die Zeit von EDT zu EST und die Uhren werden um eine Stunde auf 1:00 Uhr zurückgestellt. So passiert zum Beispiel am 5. November um 1:30 Uhr zweimal; einmal in EDT und einmal in EST.Einfügen UTC Zeitstempel in MySQL - Sommerzeitzone

Wie kann ich den Server zwischen den beiden unterscheiden? Zum Beispiel, wenn ich EDT '2017-11-05 01:30:00' einfügen möchte, gibt es eine Möglichkeit, MySQL zu sagen, den Unterschied zwischen '2017-11-05 01:30:00' EDT (vor der Zeitänderung) und '2017-11-05 01:30:00' EST (nach der Zeitänderung), wenn ich Werte einfüge? Meine Java-Anwendung enthält die Zeitzoneninformationen beider Zeitstempel, falls dies wichtig ist.

Ich möchte die globale Zeitzone des Servers als 'America/New_York' behalten, da Benutzer auf diese Daten zugreifen und sie in ihrer lokalen Zeit anzeigen möchten.

Die Lösung, an die ich gedacht habe, ist, die Zeitzone der Verbindung vom Java-Client auf UTC zu setzen, die Werte in UTC einzugeben und dann die Zeitzone der Verbindung zurückzusetzen, aber ich wollte wissen, ob es einen besseren, 'Standard' gibt Lösung.

+0

Wenn der Wert in UTC ist, gibt es keine DST Mehrdeutigkeit. '2017-11-05T01: 30 EDT' ist das gleiche wie' 2017-11-05T05: 30 UTC' und '2017-11-05T01: 30: 00 EST' ist' 2017-11-05T06: 30 UTC'. –

+0

Ich weiß. Meine Frage ist, ich habe 2 Zeitstempel in Java. Einer ist "2017-11-05 01:30:00" EDT und der andere ist "2017-11-05 01:30:00" EST. Wie kann ich beides in das MySQL-Feld vom Typ TIMESTAMP einfügen, welches UTC ist? Muss ich sie zuerst in Java in UTC konvertieren und dann einfügen, oder gibt es einen besseren Weg? –

+0

Wenn du * timestamp * sagst, meinst du einen 'java.sql.Timestamp' oder einen anderen Typ? –

Antwort

0
+0

Obwohl eine große API, ist Joda-Time im Wartungsmodus und wird durch die neuen APIs ersetzt. Sogar auf [jodas Website] (http://www.joda.org/joda-time) heißt es: ** "Beachten Sie, dass Joda-Time als ein weitgehend" abgeschlossenes "Projekt betrachtet wird. Es sind keine größeren Verbesserungen geplant Wenn Sie Java SE 8 verwenden, migrieren Sie bitte zu java.time (JSR-310). "** - OP hat jedoch gesagt, dass' ZoneDateTime' (Java 8) verwendet wird. Es gibt also keinen Grund, Joda-Time zu verwenden. –