long
Epoch가 시작된 이후 밀리 초로 표시되는 날짜를 s 로 반환하는 외부 API가 있습니다.
이전 스타일의 자바 API로, 나는 간단하게 만들 것 Date
와의를
Date myDate = new Date(startDateLong)
Java 8 LocalDate
및 LocalDateTime
클래스 의 해당 내용은 무엇입니까 ?
나는에 의해 표현 시점 변환에 관심이 long
A를 LocalDate
내 현재 로컬 시간대에.
답변
Epoch 이후 밀리 초가 있고 현재 현지 시간대를 사용하여 현지 날짜로 변환하려면 다음을 사용할 수 있습니다.
LocalDate date =
Instant.ofEpochMilli(longValue).atZone(ZoneId.systemDefault()).toLocalDate();
그러나 시스템의 기본 시간대조차도 변경 될 수 있으므로 동일한 시스템에서도 동일한 long
값이 후속 실행에서 다른 결과를 생성 할 수 있습니다.
또한와 LocalDate
달리 java.util.Date
실제로 날짜와 시간이 아니라 날짜를 나타냅니다.
그렇지 않으면, 당신은 사용할 수 있습니다 LocalDateTime
:
LocalDateTime date =
LocalDateTime.ofInstant(Instant.ofEpochMilli(longValue), ZoneId.systemDefault());
답변
Instant.ofEpochMilli (long)로 시작할 수 있습니다 :
LocalDate date =
Instant.ofEpochMilli(startDateLong)
.atZone(ZoneId.systemDefault())
.toLocalDate();
답변
더 나은 대답이 있다고 생각합니다.
new Timestamp(longEpochTime).toLocalDateTime();
답변
시간대와 물건을 제쳐두고 아주 간단한 대안이 new Date(startDateLong)
될 수 있습니다.LocalDate.ofEpochDay(startDateLong / 86400000L)
답변
now.getTime ()을 긴 값으로 바꾸십시오.
//GET UTC time for current date
Date now= new Date();
//LocalDateTime utcDateTimeForCurrentDateTime = Instant.ofEpochMilli(now.getTime()).atZone(ZoneId.of("UTC")).toLocalDateTime();
LocalDate localDate = Instant.ofEpochMilli(now.getTime()).atZone(ZoneId.of("UTC")).toLocalDate();
DateTimeFormatter dTF2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
System.out.println(" formats as " + dTF2.format(utcDateTimeForCurrentDateTime));
답변
에포크 초 타임 스탬프가 SQL에서 유래되었거나 SQL과 관련이있는 특정 경우 다음과 같이 얻을 수 있습니다.
long startDateLong = <...>
LocalDate theDate = new java.sql.Date(startDateLong).toLocalDate();