답변:
넌 할 수있어:
timeStamp.toLocalDateTime().toLocalDate();
참고
timestamp.toLocalDateTime()
사용합니다Clock.systemDefaultZone()
변환을 할 시간대를. 이것은 당신이 원하는 것일 수도 있고 아닐 수도 있습니다.
timestamp.toLocalDateTime()
로이 메서드는 systemDefault 시간대를 사용하여 변환합니다. 이것은 당신이 원하는 것일 수도 있고 아닐 수도 있습니다.
LocalDateTime
항상 시스템 기본 시간대를 사용합니다. 그것이 "로컬"이 그 이름에서 의미하는 것입니다.
받아 들여진 대답이 이상적이지 않아서 2 센트를 더하기로 결정했습니다
timeStamp.toLocalDateTime().toLocalDate();
일반적으로 나쁜 솔루션입니다 . 시스템 시간대를 사용하여 암시 적 변환을 수행하여 작업을 실제로 혼란스럽게 만들기 때문에 JDK에이 메서드를 추가 한 이유를 잘 모르겠습니다. 일반적으로 java8 날짜 클래스 만 사용할 때 프로그래머는 좋은 시간대를 지정해야합니다.
좋은 해결책은
timestamp.toInstant().atZone(zoneId).toLocalDate()
여기서 zoneId 는 사용하려는 시간대이며 시스템 시간대를 사용하려는 경우 일반적으로 ZoneId.systemDefault () 또는 ZoneOffset.UTC 와 같은 하드 코딩 된 시간대입니다.
일반적인 접근 방식은
시간대를 고려하여 @assylias 답변을 약간 확장하겠습니다. 특정 시간대에 대해 LocalDateTime을 가져 오는 방법에는 두 가지 이상이 있습니다.
전체 애플리케이션에 대해 setDefault 시간대를 사용할 수 있습니다. 타임 스탬프-> java.time 변환 전에 호출해야합니다.
public static void main(String... args) {
TimeZone utcTimeZone = TimeZone.getTimeZone("UTC");
TimeZone.setDefault(utcTimeZone);
...
timestamp.toLocalDateTime().toLocalDate();
}
또는 toInstant.atZone 체인을 사용할 수 있습니다.
timestamp.toInstant()
.atZone(ZoneId.of("UTC"))
.toLocalDate();