2015-03-20 16 views
44

Làm cách nào để chuyển đổi LocalDate thành java.sql.Date?Làm thế nào để chuyển đổi LocalDate thành SQL ngày Java?

Attempt:

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

này không (sẽ không biên dịch) và tất cả những gì có thể tìm thấy là Joda lần thứ.

Tôi đang sử dụng Java 8

+0

thể trùng lặp của [Chuyển đổi giữa LOCALDATE và sql.Date] (http://stackoverflow.com/question/29750861/convert-between-localdate-and-sql-date) – assylias

+2

@assylias Câu trả lời cho câu hỏi được liên kết tốt hơn so với câu hỏi được đưa ra ở đây như thế nào? Các câu hỏi khác nên được đóng lại như là một bản sao của điều này, không phải ngược lại. –

+0

@SecondRikudo bản sao cho thấy làm thế nào để chuyển đổi từ LocalDate sang ngày và ngược lại, và do đó có vẻ chung chung hơn. – assylias

Trả lời

79

Câu trả lời thực sự đơn giản;

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

Nếu bạn muốn chuyển đổi nó theo cách khác xung quanh, bạn làm điều đó như thế này:

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

r là kỷ lục bạn đang sử dụng trong JOOQ và .getDate() là phương pháp để nhận được ngày trong hồ sơ của bạn; giả sử bạn có một cột ngày gọi là date_of_birth, thì phương thức get của bạn sẽ được gọi là getDateOfBirth().

+0

Đây là một "hack khủng khiếp" theo tác giả java.time. *: https://stackoverflow.com/questions/33066904/localdate-to-java-util-date-and- ngược lại-đơn giản-chuyển đổi # comment72769769_33066935 – Dherik

+1

Bạn đang sắp xếp lại các câu hỏi về 'java.util.Date' ** NOT **' java.sql.Date' mà Câu hỏi này là về. – Gemtastic

0

Bạn đã thử sử dụng phương thức toDate() của LocalDate chưa?

Như trong:

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

Nói chung, đó là một ý tưởng tốt để xác định cách nó không thành công chứ không phải chỉ nói "nó không thành công".

+0

Thành thật mà nói, tôi chỉ đăng câu hỏi để đăng câu trả lời của tôi để bạn có thể tìm thấy nó khi bạn google. Tôi phải tự mình hình dung vì goodle không có câu hỏi hay câu trả lời này. – Gemtastic

+5

Vâng, bây giờ bạn có hai câu trả lời sau đó, càng nhiều càng tốt. Tôi không nghĩ có gì sai khi trả lời các bài viết của chính bạn. – juhist

+0

Tôi hy vọng nó sẽ giúp một người nào đó ở vị trí của tôi trong tương lai. – Gemtastic

0

Nếu bạn muốn ngày hiện tại:

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

Nếu bạn muốn có một ngày cụ thể:

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

Điều này chỉ nhanh hơn nếu bạn muốn thời điểm hiện tại, nếu bạn muốn có một ngày cụ thể, có thể là trường hợp bạn đang xử lý ngày sinh của ai đó, điều này sẽ không hoạt động chút nào. – Gemtastic

+0

Có, đó là chèn ngày hiện tại, ví dụ khi bạn tạo đối tượng và muốn tồn tại ngày tạo. – RichardK

+0

Điều quan trọng cần lưu ý là câu hỏi ban đầu là tất cả về việc tạo một ngày cụ thể. Đó là một lưu ý cho tất cả các copy-pasters ra khỏi đó. Bạn CÓ THỂ trực tiếp câu trả lời đúng với 'Ngày tháng = Date.valueOf (LocalDate.of (1967, 06, 22));' nếu bạn muốn làm điều đó "nhanh hơn". – Gemtastic

Các vấn đề liên quan