티스토리 뷰

반응형

← 목차로 돌아가기

 

Java에서 날짜, 시간 제대로 다루기

개요 기존 Date 클래스와 Calendar 클래스는 날짜와 Timezone 관련되어 개발자를 헷갈리게 하는 부분이 많아 쓰는 것을 지양해야 한다. 위에 대한 대체제로 LocalDateTime, LocalDate, LocalTime가 java 1.8에서..

dev-cho.tistory.com


 

ZoneId Class

ZoneId 는 지역/도시 의 형태의 값을 가지며 아래와 같이 만들 수 있다.

/*서울의 ZoneId 만들기*/
ZoneId zoneIdKorea = ZoneId.of("Asia/Seoul");

/*기기의 ZoneId 만들기*/
ZoneId defaultZoneId = TimeZone.getDefault().toZoneId();

ZoneId를 이용해 LocalDateTime에 시간대를 추가하여 ZonedDateTime Class를 만들 수 있다.

 

ZonedDateTime Class

ZonedDateTime Class는 LocalDateTime에 ZoneId의 값을 넣은 클래스이다. 즉, 시간대가 포함된 날짜, 시간 클래스이다.

  • LocalDateTime에 ZoneId를 넣을 수 있다.
LocalDateTime dateTime = LocalDateTime.of(2021, 1, 26, 19, 30, 20);
ZoneId defaultZoneId = TimeZone.getDefault().toZoneId();
ZonedDateTime zonedDateTime = dateTime.atZone(defaultZoneId);

 

 

  • 기기의 Instant를 받아와 시간대로 변환하여 ZonedDateTime 클래스를 만들 수 있다.
ZoneId defaultZoneId = TimeZone.getDefault().toZoneId();
Instant instant = Instant.now();
ZonedDateTime zonedDateTime = instant.atZone(defaultZoneId);

 

  • ZonedDateTime을 Instant로 변환하는 것 또한 가능하다. 이미 시간대가 포함되어 있으므로 별도의 작업을 할 필요가 없다.
ZoneId defaultZoneId = TimeZone.getDefault().toZoneId();
Instant instant = Instant.now();
ZonedDateTime zonedDateTime = instant.atZone(defaultZoneId);
zonedDateTime.toInstant();
반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함