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 .