Konvertieren Sie joda.time.DateTime in java.sql.Date und behalten Sie die Zeitzone bei
Ich habe folgendes Szenario:
Swing-Steuerung, die a zurückgibtCalendar
ObjektMittlereDateTime
Objekt, mit dem ich schwere Datums- / Uhrzeitmanipulationen durchführe (joda)Datenbankverbindung (OraclePreparedStatement
) das dauert nur einejava.sql.Date
ObjektMein Problem ist, dass dieCalendar
undDateTime
Objekte zeigen das Datum in GMT korrekt an (was ich will), aber wenn ich in konvertierejava.sql.Date
Zum Senden an die Datenbank wird das Datum in die lokale Zeitzone konvertiert.
Zum Beispiel:
Calendar
undDateTime
are 2012-08-13T23: 59: 59.000Z (korrekte GMT)Resultierendjava.sql.Date
ist 2012-08-14 (falsches lokales UTC + 2 Datum)Unten ist der Code, mit dem ich die Konvertierung durchführe.
DateTime dateGmt = new DateTime(calendarGmt.getTimeInMillis(), DateTimeZone.UTC);
java.sql.Date sqlDate = new java.sql.Date(dateGmt.getMillis());
Ich weiß nicht, wie ich eine erstellen solljava.sql.Date
Objekt unter Beibehaltung der richtigen Zeitzone. Es ist auch durchaus möglich, dass ich eine falsche Konvertierung durchführe.