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.