2015-10-13 27 views
7

Tôi đang cố gắng chuyển đổi một đối tượng java.time.LocalTime thành java.util.Date nhưng không thể tìm thấy bất kỳ phương pháp phù hợp nào. Cách chính xác để làm điều này là gì?Chuyển đổi LocalTime (Java 8) thành Ngày

Có lý do gì khiến java dường như không giao hàng với phương pháp chuyển đổi trực tiếp tích hợp không?

Để trùng lặp có thể:
How to convert joda time - Không hoạt động đối với tôi, có thể tôi đang thiếu một số thư viện "joda"?
How to convert Date to LocalTime? - Địa chỉ này chuyển đổi theo cách khác.

+0

Bản sao có thể có của [Cách chuyển đổi thời gian Joda LocalTime thành java.util.Date?](http://stackoverflow.com/questions/15543031/how-to-convert-joda-time-localtime-to-java- util-date) – thegauravmahawar

+0

Có thể trùng lặp của [Chuyển đổi java.util.Date sang java.time.LocalDate] (http://stackoverflow.com/questions/21242110/convert-java-util-date-to-java-time-localdate) – Phantomazi

Trả lời

11

localtime thực sự không thể được chuyển đổi sang một ngày, vì nó chỉ chứa các thời gian phần của DateTime. Như 11:00. Nhưng không có ngày nào được biết đến. Bạn phải cung cấp theo cách thủ công:

LocalTime lt = ...; 
Instant instant = lt.atDate(LocalDate.of(A_YEAR, A_MONTH, A_DAY)). 
     atZone(ZoneId.systemDefault()).toInstant(); 
Date time = Date.from(instant); 

Đây là bài đăng trên blog explains all the conversions giữa API mới và API cũ.

Không có phương pháp chuyển đổi được cài sẵn đơn giản, vì các API này tiếp cận ý tưởng về ngày và giờ theo cách hoàn toàn khác.

+0

Cảm ơn! Nhưng tôi đang bối rối bởi tờ khai LocalTime của bạn. 'LocalTime lt = ...' có nghĩa là gì? – Jbartmann

+1

Nó có nghĩa là bạn nên tự tạo đối tượng hoặc lấy nó từ đâu đó. Nó không phải Java, nếu đó là những gì bạn đang yêu cầu. – Dariusz

+1

Dariusz có nghĩa là bạn phải cung cấp bốn thứ để sử dụng mã của mình: một đối tượng LocalTime, một số nguyên cho năm, một số nguyên cho tháng và số nguyên trong ngày. Ngoài ra, thay thế 'ZoneId.systemDefault' bằng một ZoneId cụ thể tùy thuộc vào nơi bạn dự định ngày giờ này. 12:30 ngày 03 tháng 12 đến sớm hơn ở Paris hơn Montreal ví dụ. –

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