[java] LocalDate를 Instant로 변환하는 방법?

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)


답변