2015-03-20 2 views
44

Как преобразовать LocalDate в java.sql.Date?Как преобразовать LocalDate в SQL Date Java?

Попытка:

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

Это не может (не компилировать) и все, что я могу найти Joda время материал.

Я использую Java 8

+0

возможный дубликат [Преобразовать между LocalDate и sql.Date] (http://stackoverflow.com/questions/29750861/convert-between-localdate-and-sql-date) – assylias

+2

@assylias Как ответ на связанный вопрос лучше, чем приведенные здесь? Другой вопрос должен быть закрыт как дубликат этого, а не наоборот. –

+0

@SecondRikudo дубликат показывает, как конвертировать из LocalDate в Date и наоборот, и поэтому кажется более общим. – assylias

ответ

79

Ответ на самом деле прост;

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

Если вы хотите, чтобы преобразовать его в другую сторону вокруг, вы делаете это так:

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

r является запись, которую вы используете в JOOQ и .getDate() метод для получения дата из вашей записи; допустим, у вас есть столбец даты с именем date_of_birth, тогда ваш метод get должен быть вызван getDateOfBirth().

+0

Это «ужасный взлом» в соответствии с java.time. * Автор: https://stackoverflow.com/questions/33066904/localdate-to-java-util-date-and- наоборот - простое преобразование # comment72769769_33066935 – Dherik

+1

Вы задаете вопросы о 'java.util.Date' ** NOT **' java.sql.Date', о котором идет речь. – Gemtastic

0

Вы пробовали использовать метод toDate() LocalDate?

Как и в:

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

В общем, это хорошая идея, чтобы указать как он не, а не просто сказать: «он не».

+0

Честно говоря, я только разместил вопрос, чтобы опубликовать свой ответ, чтобы вы могли его найти, когда вы google. Я должен был понять это сам, потому что у добра не было этого вопроса или ответа. – Gemtastic

+5

Ну, теперь у вас есть два ответа, тем более веселее. Я не думаю, что есть что-то не так, чтобы отвечать на ваши собственные сообщения. – juhist

+0

Надеюсь, это поможет кому-то на моем месте в будущем. – Gemtastic

0

Если вы хотите текущую дату:

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

Если вы хотите конкретную дату:

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

Это происходит быстрее, если вы хотите, чтобы текущий момент, если вы хотите определенную дату, как может быть, когда вы имеете дело с чьей-то датой рождения, это не сработает. – Gemtastic

+0

Да, нужно вставить текущую дату, например, когда вы создаете объект и хотите сохранить дату создания. – RichardK

+0

Важно отметить, что исходный вопрос касается создания конкретной даты. Это примечание для всех копировальных аппаратов. ВЫ МОЖЕТЕ выполнить oneline правильный ответ с 'Date date = Date.valueOf (LocalDate.of (1967, 06, 22)),' если вы хотите сделать это быстрее ". – Gemtastic

Смежные вопросы