Как я могу создать Java 8 LocalDate из долгого времени эпохи в миллисекундах?
у меня есть внешний API возвращает мне даты как longs, представленный как миллисекунды с эпохи.
со старым стилем Java API, я бы просто построить Date С
Date myDate = new Date(startDateLong)
что такое эквивалент в Java 8's LocalDate/LocalDateTime классы?
Я заинтересован в преобразовании точки во времени, представленной длинной в LocalDate в моем текущем часовом поясе.
4 ответов:
если у вас есть миллисекунды с момента эпохи и вы хотите преобразовать их в локальную дату, используя текущий локальный часовой пояс, вы можете использовать
LocalDate date = Instant.ofEpochMilli(longValue).atZone(ZoneId.systemDefault()).toLocalDate();но имейте в виду, что даже часовой пояс системы по умолчанию может измениться, таким образом, то же самое
longзначение может привести к различным результатам в последующих запусках, даже на той же машине.далее, имейте в виду, что
LocalDateВ отличие отjava.util.Date, действительно представляет дату, а не дату и время.в противном случае, вы можете использовать а
LocalDateTime:LocalDateTime date = LocalDateTime.ofInstant(Instant.ofEpochMilli(longValue), ZoneId.systemDefault());
вы можете начать с мгновенный.офепочмилли (долго):
LocalDate date = Instant.ofEpochMilli(startDateLong) .atZone(ZoneId.systemDefault()) .toLocalDate();
часовые пояса и прочее в сторону, очень простая альтернатива
new Date(startDateLong)может бытьLocalDate.ofEpochDay(startDateLong / 86400000L)
Comments