Vì hầu hết mọi người đều nhận thức rõ về thời điểm hiện tại, API Java để xử lý các ngày theo lịch (cụ thể là các lớp java.util.Date
và java.util.Calendar
) là một mớ hỗn độn khủng khiếp.Tại sao API ngày Java (java.util.Date, .Calendar) là một mớ hỗn độn như vậy?
Off đỉnh đầu của tôi:
- ngày là có thể thay đổi
- ngày đại diện cho một dấu thời gian, không phải là một ngày
- không có cách nào dễ dàng để chuyển đổi giữa các thành phần ngày (ngày, tháng, năm .. .) và ngày
- Lịch thiếu uyển chuyển để sử dụng, và cố gắng kết hợp các hệ thống lịch khác nhau vào một lớp
This post tổng hợp nó khá tốt, và JSR-310 cũng làm lộ những vấn đề này.
Bây giờ câu hỏi của tôi là:
Các lớp này biến nó thành Java SDK như thế nào? Hầu hết các vấn đề này dường như khá rõ ràng (đặc biệt là Ngày có thể thay đổi) và nên dễ tránh. Vậy làm thế nào nó xảy ra? Áp lực thời gian? Hay là những vấn đề hiển nhiên khi nhìn lại?
Tôi nhận thấy đây không phải là một câu hỏi lập trình nghiêm ngặt, nhưng tôi thấy thú vị khi hiểu cách thiết kế API có thể bị sai. Xét cho cùng, những sai lầm luôn là một cơ hội học tập tốt (và tôi tò mò).
Tiêu cực kép luôn là biểu mẫu không đúng ... Ngày không thể thay đổi được Ngày không phải là không thay đổi. –
Hy vọng rằng, API ngày và giờ mới của JSR-310, dựa trên Joda-Time, sẽ xuất xưởng trong Java 7. –
Và DateFormat không được thiết kế để an toàn chỉ ... (http://bugs.sun.com /bugdatabase/view_bug.do?bug_id=4093418) – Arjan