Первоначально, Date
был предназначен для содержания всей логики относительно дат, но разработчики API в конечном счете поняли, что API, который они имели до сих пор, был горестно несоответствующим и не мог быть чисто расширен, чтобы правильно заниматься проблемами, такими как часовые пояса, локали, различные календари, времена перехода на летнее время, и т.д.
, Таким образом, они создали Calendar
для контакта со всей этой сложностью и понизили Date
к простой метке времени, удержав от использования всю ее функциональность, которая имела дело с форматированием, анализируя и отдельными полями даты.
BTW, внутренне эти методы такой как Date(int, int, int)
конструктор теперь звонит Calendar
, поэтому если Вы видите различие в скорости, тогда Вы делаете что-то не так при вызове Calendar
.
концевая строка: это не Java Calendar
API, который чрезмерно сложен, это - человеческое понятие дат, и единственная проблема с Calendar
состоит в том, что это предлагает не очень в способе ярлыков на наиболее распространенные использования.
API Даты Java долго были critized, посмотрите, например этот поток .
Вы могли бы хотеть проверить Joda-разовый или Apache Commons Lang для альтернативных утилит Date/Time.
Ответ является мобильностью.
класс Date
не очень гибок. Можно определить даты, но не с любым преобразованием в другие форматы календаря. Таким образом, Sun решил использовать дополнительную иерархию классов (Calendar
) для создания его более гибким.
, Тем не менее, это не очень удобно.
Главным образом, потому что исходный java.util. Дата была чрезмерно увеличена в размере и не знающий абсолютно часовой пояс и не дружественная интернационализация.
Однако Дата все еще используется и очень хорошо в Объектах Значения, или скажите как тип данных. Насколько Вы делаете его неизменным явно, можно пойти легко. Я склонен думать, что это должно быть неизменно для другой цели, которой у нас есть Календарь для управления. Где его судьба управления ожидала, нужно считать что-то как, Joda-разовым.
[Отредактированный]
Просто не инстанцируют Даты, в последнем коде. Бесполезный. Можно достигнуть лучшего результата для сравнительного теста.
Конечно, никто никогда не использует никакой другой формат календаря, но новый API увеличивает объем кода для записи для 99%-го общего падежа, таким образом, это - большое благо для программистов Java, заплаченных МЕСТОПОЛОЖЕНИЕМ