Ich habe eine LocalDate
, die ich in eine java.sql.Date
konvertieren möchte, um es in einem Date-Feld in der DB zu speichern. Mein Problem ist, dass, wenn ich es zu einem java.sql.Date
umwandle, es ein Tag hinter ist, wegen der Maschine, auf der ich läuft, in EST zu sein. Ich habe Joda.DateTime
in UTC eingerichtet und die java.sql.Date
über den Millis-Konstruktor erstellt. Ich bin auch die Ausgabe des Debug-Uhren so können Sie sehen, was die verschiedenen Werte sind:Was ist der richtige Weg von LocalDate zu java.sql.Date gehen
item.getDate().toDateTimeAtStartOfDay() = {[email protected]}"2013-09-25T00:00:00.000Z"
item.getDate().toDateTimeAtStartOfDay().getMillis() = 1380067200000
new java.sql.Date(item.getDate().toDateTimeAtStartOfDay().getMillis()) = {[email protected]}"2013-09-24"
item.getDate().getLocalMillis() = 1380067200000
new java.sql.Date(item.getDate().getLocalMillis()) = {[email protected]}"2013-09-24"
new java.util.Date(item.getDate().getLocalMillis()) = {[email protected]}"Tue Sep 24 20:00:00 EDT 2013"
Von der java.util.Date
Schöpfung Ich nehme an, es liegt daran, dass meine Maschine teste ich auf in EST ist, und Das LocalDate ist in UTC, aber ich bin mir nicht sicher, was der richtige Weg ist, um das zu beheben. Mir ist klar, dass ich die lokale Zeitzone bekommen und das zu den Millis hinzufügen kann, aber das scheint wie ein Hacky-Fix zu sein. Gibt es einen richtigen Weg, dies zu tun, den ich gerade vermisse?
-Update mit dem millis für die java.util.Date
new java.util.Date(item.getDate().getLocalMillis()).getTime() = 1380153600000
item.getDate().toDateTimeAtStartOfDay().getMillis() = 1380153600000
item.getDate() = {[email protected]}"2013-09-26"
new java.sql.Date(item.getDate().getLocalMillis()).getTime() = 1380153600000
new java.util.Date(item.getDate().getLocalMillis()) = {[email protected]}"Wed Sep 25 20:00:00 EDT 2013"
new java.util.Date(item.getDate().getLocalMillis()).getTime() = 1380153600000
Was ist der Wert in Millisekunden des SQL- und util 'Date' Objekte? –