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

1. Общ преглед

В този бърз урок ще илюстрираме множество начини за преобразуване на времето в Unix-epoch милисекунди в Java .

По-конкретно ще използваме:

  • Java.util.Date и календар на Core Java
  • API за дата и час на Java 8
  • Библиотека Joda-Time

2. Основна Java

2.1. Използване на дата

Първо, нека дефинираме свойство милис, съдържащо произволна стойност от милисекунди:

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

Ще използваме тази стойност, за да инициализираме различните си обекти и да проверим резултатите си.

След това нека започнем с обект Date :

Date date = // implementation details

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

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

2.2. Използване на Календар

По същия начин, ако имаме обект Календар , можем да използваме метода getTimeInMillis () :

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

3. Java 8 Date Time API

3.1. Използване на Instant

Най-просто казано, Instant е точка от времевия график на Java.

Можем да получим текущото време в милисекунди от моменталното :

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

В резултат на това методът toEpochMilli () връща същия брой милисекунди, както дефинирахме по-рано.

3.2. Използване на LocalDateTime

По същия начин можем да използваме 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. Joda-Time

Докато Java 8 добавя голяма част от функционалността на Joda-Time, може да поискаме да използваме тази опция, ако сме на Java 7 или по-стара версия.

4.1. Използване на Instant

Първо, можем да получим текущата система в милисекунди от екземпляра на класа 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.