tl; dr
java.time.Instant.now() // Capture the current moment in UTC.
Внутри момент отслеживается как количество целых секунд плюс доля секунды как количество наносекунд, начиная с эталонной эпохи 1970-01-01T00: 00: 00Z(Z
означает UTC).
java.time
Ваш класс DateTime
очевидно из библиотеки Joda-Time.Создатель этой библиотеки Стивен Колебурн заменил Joda-Time классами java.time , встроенными в Java 8 и более поздние версии, в соответствии с JSR 310.
Instant
На мгновение в UTC, используйте Instant
.Чтобы зафиксировать текущий момент в UTC, Instant.now()
.
Instant
представляет количество наносекунд с начала отсчета эпохи первого момента 1970 года в UTC.
Вызов System.currentTimeMillis()
такой же, счет с начала UTC 1970 года, за исключением более грубого разрешения в миллисекундах, а не в наносекундах.На практике обычные компьютерные часы не могут точно отслеживать текущий момент в наносекундах, поэтому захват текущего момента с помощью Instant
может захватывать только микросекунды (обычно в Java 9 и более поздних версиях) или миллисекунды (в Java 8).
Результат: нет необходимости звонить System.currentTimeMillis()
.Вместо этого используйте Instant.now()
.
ZonedDateTime
Эквивалент DateTime
будет ZonedDateTime
.Этот класс представляет момент, который виден через часы настенного времени, используемые людьми определенного региона (часового пояса).
ZoneId z = ZoneId.of( "Africa/Tunis" ) ;
ZonedDateTime zdt = ZonedDateTime.now( z ) ;