2015-03-20 8 views
44

Wie konvertiere ich ein LocalDate zu einem java.sql.Date?Wie konvertiert man LocalDate zu SQL Date Java?

Versuch:

Record r = new Record(); 
LocalDate date = new Date(1967, 06, 22); 
r.setDateOfBirth(new Date(date)); 

Dies schlägt fehl (wird nicht kompiliert) und alles, was ich finden kann, ist Joda Zeit Dinge.

Ich bin mit Java 8

+0

möglich Duplikat [Konvertieren zwischen LOCALDATE und sql.Date] (http://stackoverflow.com/questions/29750861/convert-between-localdate-and-sql-date) – assylias

+2

@assylias Wie ist die Antwort auf die verknüpfte Frage besser als die hier gegebenen? Die andere Frage sollte als Duplikat geschlossen werden, nicht umgekehrt. –

+0

@SecondRikudo Das Duplikat zeigt, wie man von LocalDate in Date AND umkehrt und umgekehrt, und daher allgemeiner erscheint. – assylias

Antwort

79

Die Antwort ist sehr einfach;

import java.sql.Date; 
... 
LocalDate locald = LocalDate.of(1967, 06, 22); 
Date date = Date.valueOf(locald); // Magic happens here! 
r.setDateOfBirth(date); 

Wenn Sie es umgekehrt konvertieren wollen, tun Sie es wie folgt aus:

Date date = r.getDate(); 
LocalDate localD = date.toLocalDate(); 

r ist der Datensatz, den Sie in jOOQ mit bist und .getDate() ist das Verfahren für die Einstiegs- Datum aus Ihrer Aufzeichnung; Nehmen wir an, Sie haben eine Datumsspalte mit dem Namen date_of_birth, dann sollte Ihre Methode get getDateOfBirth() heißen.

+0

Dies ist ein "schrecklicher Hack" nach dem java.time. * Autor: https://stackoverflow.com/questions/33066904/localdate-to-java-util-date-and- umgekehrt-einfachste-conversion # comment72769769_33066935 – Dherik

+1

Sie beziehen sich auf Fragen über 'java.util.Date' ** NICHT **' java.sql.Date', um die es in dieser Frage geht. – Gemtastic

0

Haben Sie versucht, die toDate() - Methode von LocalDate zu verwenden?

Wie in:

Record r = new Record(); 
LocalDate date = new Date(1967, 06, 22); 
r.setDateOfBirth(date.toDate()); 

Im Allgemeinen ist es eine gute Idee, wie es versagt und nicht nur sagen, „es nicht“ angeben.

+0

Um ehrlich zu sein, habe ich nur die Frage gepostet, um meine Antwort zu posten, so dass Sie es finden können, wenn Sie googeln. Ich musste es alleine herausfinden, weil diese Frage oder Antwort nicht von goodle stammte. – Gemtastic

+5

Nun, jetzt hast du zwei Antworten, je mehr desto besser. Ich glaube nicht, dass irgendwas falsch ist, wenn man seine eigenen Posts beantwortet. – juhist

+0

Ich hoffe, es wird jemandem in Zukunft an meiner Stelle helfen. – Gemtastic

0

Wenn Sie das aktuelle Datum wollen:

Date date = Date.valueOf(LocalDate.now()); 

Wenn Sie ein bestimmtes Datum wollen:

Date date = Date.valueOf(LocalDate.of(1967, 06, 22)); 
+1

Dies ist nur schneller, wenn Sie den aktuellen Moment möchten, wenn Sie ein bestimmtes Datum wünschen, wie es bei einem Geburtsdatum der Fall sein könnte, wird dies überhaupt nicht funktionieren. – Gemtastic

+0

Ja, es ist ein aktuelles Datum einzufügen, zum Beispiel wenn Sie ein Objekt erstellen und das Erstellungsdatum beibehalten möchten. – RichardK

+0

Das ist wichtig zu beachten, da sich die ursprüngliche Frage auf das Erstellen eines bestimmten Datums bezieht. Es ist eine Notiz für alle Copy-Paster da draußen. Sie können die richtige Antwort mit 'Date date = Date.valueOf (LocalDate.of (1967, 06, 22)) online eingeben;' wenn Sie es "schneller" machen wollen. – Gemtastic