В пакете
java.util расположены старые классы стандартной библиотеки Java:
Date (дата+время),
Calendar (конвертация и манипуляция),
TimeZone (смещение часового пояса). Эти классы обладали рядом известных проблем. Экземпляры были изменяемыми, что делало их потоко-небезопасными. Работа с датами через календарь была неудобной, не было нормальной поддержки часовых поясов и интернационализации.
Постепенно стандартом де-факто стала сторонняя библиотека
Joda-Time. Её разработчики решили все названные выше проблемы.
В Java 8 был добавлен пакет
java.time, который взял решения из Joda-Time в стандарт, создатель библиотеки участвовал в разработке. Ключевые классы пакета:
•
LocalDate,
LocalTime и
LocalDateTime – локальные для пользователя дата/время.
•
ZonedDateTime – дата/время в определенной часовой зоне.
•
Period и
Duration – периоды дат и времени соответственно.
Отдельно существуют классы
Date и
Time пакета
java.sql. Это представление даты и времени для обмена данными через
JDBC. Не стоит пользоваться ими вне уровня доступа к данным, хотя бы потому, что это классы-наследники старого
java.util.Date.
Таким образом, в проектах на Java 8+ нужно использовать современные java.time.*, для более старых – подключать Joda-Time.