Как получить текущую дату и время в Java?

Каков наилучший способ получения текущей дату и время в Java? какие различия между ними (если их несколько)

Если Вам нужна дата и время представленное собой одно числовое значение, тогда System.currentTimeMillis() даст вам её в таком формате выраженное в количестве миллисекунд после эпохи UNIX (в виде long Java). Данное значение представляет собой дельту времени UTC и не зависит от локального часового пояса (главное, что бы часы были установлены правильно).
Если же Вам нужна дата и время позволяющая получить цифровой доступ к их частям (году, месяцу и т.д.), Вы можете использовать один из следующих вариантов:

  1. new Date() даст Вам объект Date инициализированный с текущей датой и временем. (но есть одна проблема: методы Date API в основном ошибочны... и устарели).

  2. Calendar.getInstance() предоставляет вам объект Calendar инициализированный с текущей датой и временем, используя Locale по умолчанию и TimeZone. Другие перегрузки позволяют использовать конкретную Locale и/или TimeZone. Календарь работает, но API все еще громоздки.

  3. new org.joda.time.DateTime() предоставляет вам объект Joda-time, инициализированный с текущей датой и временем, используя часовой пояс и хронологию по умолчанию.

  4. в Java 8 вызов LocalDateTime.now() и ZonedDateTime.now() даст вам представление для текущей даты/времени.

1 Вподобання

спасибо!