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.