Konvertieren von java.util.Kalender-ISO-8601-format auf java.sql.Timestamp
Ich habe ein Datum im ISO 8601 Datum-format 2015-09-08T01:55:28Z
. Ich habe diesen code zum konvertieren der ISO-8601-Schicksal eines Kalender-Objekts:
Calendar cal = javax.xml.bind.DatatypeConverter.parseDateTime("2015-09-08T01:55:28Z");
und jetzt muss ich zur Nutzung der cal.getTime()
um meine Zeit, aber ich brauche, um zu konvertieren, um ein java.sql.Timestamp
. Ich habe versucht, dies zu tun:
final Timestamp finalDate = (Timestamp) cal.getTime();
aber bekam ich diese Fehlermeldung:
java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Timestamp
Ideen?
new java.sql.Timestamp(cal.getTime().getTime())
bingo! hat funktioniert! danke Mann! sollte man diese Antwort, so kann ich bis Stimme Sie,
InformationsquelleAutor José Mendes | 2015-09-08
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als die Ausnahme, sagt:
Calendar::getTime()
gibt einejava.util.Date
Objekt, nicht einjava.sql.Timestamp
Objekt. So können Sie wandeln Sie Sie in eine Timestamp-Objekt.Verwenden:
Und auch in Betracht ziehen, ersetzen
Calendar
mit der neuen Datum & Zeit-API eingeführt in Java SE 8.InformationsquelleAutor Puce
Die Antwort von Puce korrekt ist.
java.Zeit
Die moderne Art, die in Java 8 und höher ist der Einsatz der neuen java.Zeit Rahmen. Diese neuen Klassen verdrängen die alten java.util.Datum/.Kalender, die Sie als zu verwirrend und lästig.
Einer
Instant
einen moment auf der Zeitachse, die Anzahl der Nanosekunden vom ersten moment der 1970 in UTC angegeben. Die Klasse ist in der Lage strings Parsen wie der euren, die Einhaltung der ISO-8601-format.Datenbank über alte
java.sql
ArtenAus einem Augenblick, können wir eine java.sql.Timestamp durch den Aufruf der
Methode neu Hinzugefügt, zu dieser alten Klasse.
Könnten wir kombinieren Sie alle drei Zeilen in einem one-liner, nicht, dass ich es nur empfehlen (ist das Debuggen schwieriger).
Datenbank über
java.time
ArtenAls der JDBC 4.2, eine konforme JDBC-Treiber sollte in der Lage sein, um übergeben Sie java.Zeit-Typen durch
getObject
undsetObject
auf einePreparedStatement
. Wenn Ihr Treiber nicht, verwenden Sie das conversion-Methoden für die alten Klassen.InformationsquelleAutor Basil Bourque