Java 8의 새로운 DateTime API로 작업합니다.
LocalDate를 Instant로 변환하는 방법? 나는 예외를 얻는다
LocalDate date = LocalDate.of(2012, 2, 2);
Instant instant = Instant.from(date);
왜 그런지 모르겠습니다.
답변
Instant
클래스는 타임 라인에 순간 지점을 나타냅니다. 로 /에서 변환 LocalDate
하려면 시간대 가 필요합니다. 다른 날짜 및 시간 라이브러리와 달리 JSR-310은 자동으로 시간대를 선택하지 않으므로이를 제공해야합니다.
LocalDate date = LocalDate.now();
Instant instant = date.atStartOfDay(ZoneId.systemDefault()).toInstant();
이 예에서는 JVM의 기본 시간대 ZoneId.systemDefault()
–를 사용하여 변환을 수행합니다. 관련 질문 에 대한 더 긴 답변 을 보려면 여기를 참조하십시오 .
업데이트 : 수락 된 답변 LocalDateTime::toInstant(ZoneOffset)
은 ZoneOffset
. 이 대답 LocalDate::atStartOfDay(ZoneId)
은 어떤 ZoneId
. 따라서이 답변은 일반적으로 더 유용합니다 (그리고 아마도 받아 들여질 것입니다).
추신. 나는 API의 주요 저자였습니다.
답변
인스턴트로 변환하려면 LocalDateTime 인스턴스가 있어야합니다. 예 :
LocalDate.now().atStartOfDay().toInstant(ZoneOffset.UTC)