Изначально Date
должен был содержать всю логику, касающуюся дат, но разработчики API в конце концов поняли, что API, который у них был до сих пор, был ужасно неадекватным и не мог быть чисто расширен для правильного решения таких проблем, как часовые пояса, локали различные календари, летнее время и т. д.
Таким образом, они создали Calendar
, чтобы справиться со всей этой сложностью, и отправили Date
на простую временную метку, исключив все ее функции, связанные с форматированием, анализом и отдельными полями даты.
Кстати, внутренне эти методы, такие как конструктор Date(int, int, int)
, теперь вызывают Calendar
, поэтому, если вы видите разницу в скорости, вы делаете что-то не так при вызове Calendar
.
Итог: это не API Calendar
Java, который слишком сложен, это человеческая концепция дат, и единственная проблема с Calendar
заключается в том, что он предлагает не так много ярлыков для наиболее распространенных видов использования.