Перейти к основному содержимому

Преобразование времени в миллисекунды в Java

· 3 мин. чтения

1. Обзор

В этом кратком руководстве мы проиллюстрируем несколько способов преобразования времени в миллисекунды эпохи Unix в Java .

В частности, мы будем использовать:

  • java.util.Date и календарь Core Java ``
  • API даты и времени Java 8
  • Библиотека Joda-Time

2. Ядро Java

2.1. Использование даты

Во-первых, давайте определим свойство millis , содержащее случайное значение в миллисекундах:

long millis = 1556175797428L; // April 25, 2019 7:03:17.428 UTC

Мы будем использовать это значение для инициализации наших различных объектов и проверки наших результатов.

Далее начнем с объекта Date :

Date date = // implementation details

Теперь мы готовы преобразовать дату в миллисекунды, просто вызвав метод getTime () :

Assert.assertEquals(millis, date.getTime());

2.2. Использование календаря

Аналогично, если у нас есть объект Calendar , мы можем использовать метод getTimeInMillis() :

Calendar calendar = // implementation details
Assert.assertEquals(millis, calendar.getTimeInMillis());

3. API даты и времени Java 8

3.1. Использование мгновенного

Проще говоря, Instant — это точка на временной шкале эпохи Java.

Мы можем получить текущее время в миллисекундах из Instant :

java.time.Instant instant = // implementation details
Assert.assertEquals(millis, instant.toEpochMilli());

В результате метод toEpochMilli() возвращает то же количество миллисекунд, которое мы определили ранее.

3.2. Использование локальной даты и времени

Точно так же мы можем использовать API даты и времени Java 8 для преобразования LocalDateTime в миллисекунды:

LocalDateTime localDateTime = // implementation details
ZonedDateTime zdt = ZonedDateTime.of(localDateTime, ZoneId.systemDefault());
Assert.assertEquals(millis, zdt.toInstant().toEpochMilli());

Во-первых, мы создали экземпляр текущей даты. После этого мы использовали метод toEpochMilli() для преобразования ZonedDateTime в миллисекунды.

Как мы знаем, LocalDateTime не содержит информации о часовом поясе. Другими словами, мы не можем получить миллисекунды напрямую из экземпляра LocalDateTime .

4. Джода-Время

Хотя Java 8 добавляет большую часть функциональности Joda-Time, мы можем захотеть использовать эту опцию, если мы используем Java 7 или более раннюю версию.

4.1. Использование мгновенного

Во-первых, мы можем получить текущие системные миллисекунды из экземпляра класса Joda-Time Instant , используя метод getMillis() :

Instant jodaInstant = // implementation details
Assert.assertEquals(millis, jodaInstant.getMillis());

4.2. Использование даты и времени

Кроме того, если у нас есть экземпляр Joda-Time DateTime :

DateTime jodaDateTime = // implementation details

Затем мы можем получить миллисекунды с помощью метода getMillis() :

Assert.assertEquals(millis, jodaDateTime.getMillis());

5. Вывод

В заключение в этой статье показано, как преобразовать время в миллисекунды в Java.

Наконец, как всегда, полный код для этой статьи доступен на GitHub .