1. Обзор
В этом кратком руководстве мы проиллюстрируем несколько способов преобразования времени в миллисекунды эпохи Unix в Java .
Более конкретно, мы будем использовать:
- Ядро Java java.util.Дата и Календарь
- API даты и времени Java 8
- Joda-Библиотека времени
2. Ядро Java
2.1. Использование Даты
Во-первых, давайте определим свойство millis , содержащее случайное значение в миллисекундах:
long millis = 1556175797428L; // April 25, 2019 7:03:17.428 UTC
Мы будем использовать это значение для инициализации различных объектов и проверки результатов.
Далее, давайте начнем с Даты объекта:
Date date = // implementation details
Теперь мы готовы преобразовать дату в миллисекунды, просто вызвав метод getTime () :
Assert.assertEquals(millis, date.getTime());
2.2. Использование календаря
Аналогично, если у нас есть объект Calendar , мы можем использовать метод getTimeInMillis() :
Calendar calendar = // implementation details Assert.assertEquals(millis, calendar.getTimeInMillis());
3. Java 8 Date Time API
3.1. Использование мгновенного
Проще говоря, Instant-это точка на временной шкале эпохи Java.
Мы можем получить текущее время в миллисекундах из Instant :
java.time.Instant instant = // implementation details Assert.assertEquals(millis, instant.toEpochMilli());
В результате метод toEpochMilli() возвращает то же количество миллисекунд, что и ранее.
3.2. Использование LocalDateTime
Аналогично, мы можем использовать Java 8 API даты и времени для преобразования 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. Использование DateTime
Кроме того, если у нас есть экземпляр Joda-Time DateTime :
DateTime jodaDateTime = // implementation details
Затем мы можем получить миллисекунды с помощью метода getMillis() :
Assert.assertEquals(millis, jodaDateTime.getMillis());
5. Заключение
В заключение в этой статье показано, как преобразовать время в миллисекунды в Java.
Наконец, как всегда, полный код этой статьи доступен на GitHub .