Каков наилучший способ получения текущей дату и время в 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()даст вам представление для текущей даты/времени.
спасибо!