Каков наилучший способ получения текущей дату и время в Java? какие различия между ними (если их несколько)
Если Вам нужна дата и время представленное собой одно числовое значение, тогда System.currentTimeMillis()
даст вам её в таком формате выраженное в количестве миллисекунд после эпохи UNIX (в виде long Java). Данное значение представляет собой дельту времени UTC и не зависит от локального часового пояса (главное, что бы часы были установлены правильно).
Если же Вам нужна дата и время позволяющая получить цифровой доступ к их частям (году, месяцу и т.д.), Вы можете использовать один из следующих вариантов:
-
new Date()
даст Вам объектDate
инициализированный с текущей датой и временем. (но есть одна проблема: методыDate API
в основном ошибочны... и устарели). -
Calendar.getInstance()
предоставляет вам объектCalendar
инициализированный с текущей датой и временем, используяLocale
по умолчанию иTimeZone
. Другие перегрузки позволяют использовать конкретнуюLocale
и/илиTimeZone
. Календарь работает, ноAPI
все еще громоздки. -
new org.joda.time.DateTime()
предоставляет вам объектJoda-time
, инициализированный с текущей датой и временем, используя часовой пояс и хронологию по умолчанию. -
в Java 8 вызов
LocalDateTime.now()
иZonedDateTime.now()
даст вам представление для текущей даты/времени.
спасибо!