2015-03-20 17 views
44

Jak przekonwertować wartość LocalDate na java.sql.Date?Jak przekonwertować LocalDate na SQL Data Java?

Próba:

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

To nie (nie zostanie skompilowany) i wszystko, co mogę znaleźć jest Joda czas rzeczy.

Używam Java 8

+0

możliwy duplikat [konwersji pomiędzy LOCALDATE i sql.Date] (http://stackoverflow.com/questions/29750861/convert-between-localdate-and-sql-date) – assylias

+2

@assylias Jaka jest odpowiedź na powiązane pytanie lepiej niż podane tutaj? Drugie pytanie powinno być zamknięte jako duplikat tego, a nie odwrotnie. –

+0

@SecondRikudo duplikat pokazuje, jak przekonwertować z LocalDate na Date I odwrotnie, a zatem wydaje się bardziej ogólny. – assylias

Odpowiedz

79

Odpowiedź jest naprawdę prosta;

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

Jeżeli chcesz przekonwertować go na odwrót, robisz to tak:

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

r jest zapis używasz w JOOQ i .getDate() jest metoda na uzyskiwanie data z twojego rekordu; załóżmy, że masz kolumnę daty o nazwie date_of_birth, wtedy twoja metoda get powinna być nazwana getDateOfBirth().

+0

To jest "okropny hack" zgodnie z java.time. * author: https://stackoverflow.com/questions/33066904/localdate-to-java-util-date-and- vice-versa-simplest-conversion # comment72769769_33066935 – Dherik

+1

Odpowiadasz na pytania dotyczące 'java.util.Date' ** NOT **' java.sql.Date', o które chodzi w tym pytaniu. – Gemtastic

0

Czy próbowałeś użyć metody toDate() z LocalDate?

Jak w:

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

W ogóle, to jest dobry pomysł, aby określić jak zawiedzie zamiast po prostu powiedzieć „nie powiedzie”.

+0

Szczerze mówiąc, opublikowałem to pytanie, aby opublikować moją odpowiedź, aby móc ją znaleźć, gdy jesteś w Google. Musiałem to sobie wyobrazić, ponieważ goodle nie miał tego pytania ani odpowiedzi. – Gemtastic

+5

Cóż, teraz masz dwie odpowiedzi, im więcej tym weselej. Nie sądzę, że jest coś złego w odpowiadaniu na własne posty. – juhist

+0

Mam nadzieję, że pomoże to komuś innemu w przyszłości. – Gemtastic

0

Jeśli chcesz bieżącą datę:

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

Jeśli chcesz konkretną datę:

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

To jest tylko szybsze, jeśli chcesz, aby aktualna chwila, jeśli chcesz określonej daty, jak to może być w przypadku, gdy masz do czynienia z czyjejś daty urodzenia, to nie będzie działać wcale. – Gemtastic

+0

Tak, należy wstawić bieżącą datę, na przykład podczas tworzenia obiektu i chcesz zachować datę utworzenia. – RichardK

+0

Co jest ważne, ponieważ pierwotne pytanie dotyczy tworzenia konkretnej daty. Jest to notatka dla wszystkich pastorów-kopii. MOŻESZ uzyskać poprawną odpowiedź za pomocą 'Date date = Date.valueOf (LocalDate.of (1967, 06, 22));' jeśli chcesz to zrobić "szybciej". – Gemtastic

Powiązane problemy