JAVA

ZonedDateTime과 LocalDateTime의 차이

쿠카이든 2022. 8. 5. 15:46
728x90
이해하기 쉬운 Java 예제를 사용하여 LocalDateTime 을 ZonedDateTime 으로 또는 그 반대로 변환하는 방법을 배웁니다.

 

  • LocalDateTime 의 인스턴스는 ISO-8601 달력 시스템에서 표준 시간대가 없는 날짜-시간(나노초 정밀도까지)을 나타냅니다. 
  • LocalDateTime 인스턴스는 로컬 타임라인의 한 지점을 나타냅니다 . 
  • 오프셋이나 시간대와 같은 추가 정보 없이는 유니버설 타임라인에서 순간을 나타낼 수 없습니다.
ZonedDateTime 인스턴스는 유니버설 타임라인의 순간을 나타냅니다 . 날짜, 시간 및 지역 정보의 조합입니다.
 

 

1. LocalDateTime -> ZonedDateTime

LocalDateTime에서 ZonedDateTime으로 변환하려면 지역 날짜-시간에 영역 오프셋을 추가해야 합니다. 추가할 영역 정보가 무엇이든 구성된 개체는 구성된 오프셋이 있는 유니버설 타임라인의 순간을 나타냅니다.

ZonedDateTime = LocalDateTime + ZoneId

LocalDateTime ldt = LocalDateTime.now(); //Local date time

ZoneId zoneId = ZoneId.of( "Asia/Kolkata" );  //Zone information

ZonedDateTime zdtAtAsia = ldt.atZone( zoneId );	//Local time in Asia timezone

ZonedDateTime zdtAtET = zdtAtAsia
    .withZoneSameInstant( ZoneId.of( "America/New_York" ) ); //Same time in ET timezone

프로그램 출력:

2018-07-15T11:27:46.203763100+05:30[아시아/콜카타]
2018-07-15T01:57:46.203763100-04:00[미국/뉴욕]

 

2. ZonedDateTime -> LocalDateTime

ZonedDateTime.toLocalDateTime()시간대 정보 없이 현지 날짜/시간을 가져오는 메소드를 사용 하십시오.

ZonedDateTime zdtAtET = ZonedDateTime.now(ZoneId.of("America/New_York"));

LocalDateTime ldt = zdtAtET.toLocalDateTime();

System.out.println(zdtAtET);
System.out.println(ldt);

프로그램 출력:

2018-07-15T01:59:52.054839900-04:00[미국/뉴욕]
2018-07-15T01:59:52.054839900

 

출처 : https://howtodoinjava.com/java/date-time/localdatetime-to-zoneddatetime/#:~:text=A%20LocalDateTime%20instance%20represents%20a,date%2C%20time%20and%20zone%20information.

728x90