2011-01-11 34 views
44

Tôi đang cố gắng thêm thông tin TimeZone vào LocalDate trước khi thực hiện thêm một số tính toán. LocalDate đến từ việc sử dụng ObjectLab LocalDateCalculator để thêm ngày vào một DateTime hiện có nhưng phương thức cần trả về một ReadableInstant đã sửa đổi để tạo thành một khoảng thời gian mà tôi có thể kiểm tra.Làm thế nào để chuyển đổi Joda Localdate thành Joda DateTime?

Mã Tôi đang cố gắng một lượng tới cuộc trò chuyện của Joda LOCALDATE để Joda DateTime:

LocalDate contextLocalBusinessDate = calculator.getCurrentBusinessDate(); 
DateTime businessDateAsInContextLocation = new DateTime(contextLocalBusinessDate, contextTimeZone); 

Các lỗi tôi nhận được là từ hệ thống chuyển đổi Joda của:

java.lang.IllegalArgumentException: No instant converter found for type: org.joda.time.LocalDate 
     at org.joda.time.convert.ConverterManager.getInstantConverter(ConverterManager.java:165) 
     at org.joda.time.base.BaseDateTime.<init>(BaseDateTime.java:147) 
     at org.joda.time.DateTime.<init>(DateTime.java:192) 

Tôi đang tìm khắc phục sự cố này hoặc giải pháp thay thế dẫn đến Khoảng thời gian chính xác với thông tin múi giờ đầy đủ.

Trả lời

66

Có nhiều phương pháp khác nhau trên LocalDate cho điều này, bao gồm:

Bạn phải rõ ràng về những gì bạn muốn thành phần thời gian ở lại sulting DateTime đối tượng, đó là lý do tại sao một nhà xây dựng chuyển đổi chung của DateTime không thể làm điều đó.

+11

Phát hiện. Một điều cần lưu ý: toDateTimeAtStartOfDay không có nghĩa là "nửa đêm" ... một số múi giờ thực hiện thay đổi tiết kiệm ánh sáng ban ngày để bỏ qua từ nửa đêm đến 1 giờ sáng. –

+0

Bạn có thể kết luận như tôi đã làm, phương thức nào (tất cả trả về DateTime, giống như ở đây) mà bạn chọn không thực sự quan trọng: Thực tế là một LocalDate được sử dụng nên ngụ ý nó được mã hóa mà không có ý định cụ thể thời gian vào ngày đó, vì vậy bất cứ khi nào bạn đưa nó vào chuyển đổi vào ngày đó cũng tốt như bất kỳ lúc nào khác vào ngày đó. Điều quan trọng là cho nó một thời gian là những gì cho phép chuyển đổi sang LocalDate, và nó không quan trọng thời gian là gì (kể từ khi bạn bắt đầu với một LocalDate mà không quan tâm về thời gian) nếu tất cả bạn cần là một số loại DateTime . – cellepo

+0

Xin vui lòng giúp đỡ - Tôi không thể nhìn thấy bất kỳ phương pháp này trên đối tượng LocalDate của tôi. Ký hiệu '::' có nghĩa gì trong câu trả lời của bạn? –

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