Múi giờ của tôi là CET (Berlin).
Và trong khi DateTime thử nghiệm Joda của tôi nhận thấy một số những điều kỳ lạ:Kết quả lẻ trong Thời gian Joda cho 01.04.1893
new DateTime(1893, 4, 1, 0, 0, 0, 0);
=> java.lang.IllegalArgumentException: Illegal instant due to time zone offset transition:
new DateTime(1893, 3, 31, 0, 0, 0, 0).toDate();
=> Fri Mar 31 00:06:32 CET 1893
Một 6 phút 32 giây chuyển theo múi giờ kết quả trong một thời gian không tồn tại ??
Tôi phải nói điều này là rất bất ngờ vì tôi không chỉ định bất kỳ thông tin múi giờ nào và do đó không mong đợi chạy vào loại sự cố này.
Nếu vào tháng 3 năm 1893 CET (Berlin) không tồn tại - tại sao không chọn new DateTime(1893, 3, 31, 0, 0, 0, 0)
chọn múi giờ phù hợp với thời gian tôi đã chỉ định (tức là 0 phút và 0 giây)?
Tùy chọn của tôi để có được thời gian chính xác với DateTime là gì?
- EDIT -
Sự cố dường như là toDate(). Tôi đã chỉnh sửa nó trước khi đăng câu hỏi.
Joda bản thân thực sự hoạt động tốt:
new DateTime(1893, 3, 31, 0, 0, 0, 0);
=> 1893-01-01T00:00:00.000+00:53:28
Nó chỉ là chuyển đổi sang ngày di chuyển một phần của bù đắp vào phút và giây.
IOW: Đó không phải là lỗi, đó là một tính năng. Theo nghĩa đen. –
Cảm ơn các liên kết. Tôi thấy rằng CET không tồn tại trước ngày đó. Và tôi thấy rằng joda thực sự tạo ngày tháng chính xác. Vấn đề của tôi dường như là với việc chuyển đổi sang java.util.Date mà không xử lý sự thay đổi tốt (xem chỉnh sửa của tôi). Nhưng đó có thể là một vấn đề với Date hơn DateTime. – Stroboskop