Ich habe ein Datum in mysql ohne Zeitzone, wie 2001-01-10 00:00:00 gespeichert. Ich habe Tomcat läuft in der Zeitzone +10: 00 zum Beispiel. Ich muss ein Date() generieren, die keinen Offset im Objekt haben.Java Datum generiert in verschiedenen Zeitzone, dass Tomcat läuft
Wenn ich dies tun:
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
cal.setTime(new Date(/*from 2001-01-10 00:00:00*/));
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
Date newDate = cal.getTime();
Das Ergebnis Date-Objekt immer noch den mit und zoneoffset zoneinfo auf Server-Zeitzone berichtet, nicht UTC.
Ich muss ein Date() Objekt generieren, das ZERO TIME hat, aber das Datum in mysql gespeichert, unabhängig von tomcat timezone. Mit anderen Worten, ich möchte ein Datum mit Null Stunde/Min/Sek unabhängig von Server Zeitzone generieren.
The date generated shows 2001-01-01T00:00:00.000+1400
the time is zero but offset is +14:00.
I want to generate 2001-01-01T00:00:00.000+0000
Die mysql Datatime ist DATETIME-
Bitte lesen Sie https://codeblog.jonskeet.uk/2017/04/23/all-about-java-util-date/ - ein 'java.util.Date' ist * nur * ein Augenblick in der Zeit. Es hat keine Zeitzoneninformationen. –
Gibt es einen Grund, warum Sie immer noch an den veralteten Klassen "Date" und "Calendar" hängen? 'java.time', die moderne Java-API für Datum und Uhrzeit, ist viel nocer zum Arbeiten mit und das Abrufen von Datums- und Zeitangaben als 'LocalDateTime' aus der Datenbank sollte einfach sein. –
Was ist der genaue Datentyp in MySQL? 'DATUM'? 'DATETIME'? –