Когда Вы смотрите на javadoc java.util. Класс даты, большинство методов удерживается от использования. Почему это было сделано?
Ну, по двум связанным причинам. Это была очень плохая реализация концепции дат и времени, и она была заменена классом Calendar
.
Класс Calendar
, хотя и является улучшением, также оставляет желать лучшего, поэтому для серьезной работы с датой / временем все рекомендуют Joda-Time . Java 8 представляет новый пакет java.time. * , вдохновленный Joda-Time, определенный в JSR-310 и предназначенный для замены старого пакета Date / Календарные занятия.
Изменить: В ответ на конкретный вопрос, почему реализация плохая, есть много причин.JavaDoc резюмирует это следующим образом:
К сожалению, API для этих функций не поддавался интернационализации.
В дополнение к этому общему недостатку (который покрывает такие проблемы, как отсутствие компонента часового пояса, а также форматирование даты, которое лучше обрабатывается в DateFormat
, и невозможность представления не григорианского календаря ), есть определенные проблемы, которые действительно повредили классу Date
, включая тот факт, что год представлен смещением 1900 года от года нашей эры.
Календарь
имеет свои проблемы, но уже в JDK 1.1 было очевидно, что java.util.Date
не собирается его сокращать. Несмотря на то, что Calendar
, возможно, является худшим API JDK, потребовалось до версии 7, чтобы попытаться решить эту проблему.
Дата
является изменяемой Дата
не поддерживает часовые пояса Последнее привело к ее замене на Календарь
. И первое, в сочетании с простотой использования, привело к тому, что оба были заменены на Joda-Time / JSR-310 ( java.time. * Package )
Они устарели, потому что Date был написан настолько быстро, насколько это было возможно, еще в тот день, когда JDK хотели выкинуть с рынка.
Оказывается, даты и календари трудны. Итак, они создали класс Calendar, который гораздо более продуман, чтобы справиться с трудными частями работы с календарями.
Они исключили методы Date и делегировали их Calendar, поскольку не хотели изменять поведение существующих методов Date и, возможно, нарушать работу существующих приложений.