모던 자바 인 액션 12장 : 새로운 날짜와 시간 API

Adam·2024년 7월 5일
0

모던 자바 인 액션

목록 보기
12/20
post-thumbnail

LocalDate, LocalTime, Instant, Duration, Period 클래스

LocalDate: 시간을 제외한 날짜를 표현하는 불변 객체

LocalDate date = LocalDate.of(2024,07,05);

LocalTime: 시간 분 초를 표현하는 불변 객체

LocalTime time = LocalTime.of(18,30,00);

LocalDateTime: LocalDate + LocalTime

LocalDateTime dt = LocalDateTime.of(2024, Month.JULY, 05, 18,30,00);

Instant: 유닉스 에포크 시간을 기준으로 특정 지점까지의 시간을 초로 표현

Duration: 정적 메서드 between으로 두 시간 객체 사이의 지속시간을 만든다

Duration oneDay = Period.between(LocalDate.of(2024,7,5),
																	LocalDate.of(2024,7,6));

날짜 조정, 파싱, 포매팅

withAttribute 메서드로 기존 LocalDate을 바꾼버전을 만들 수 있다

LocalDate date = LocalDate.of(2024,07,05);
LocalDate date1 = date.withYear(2025);

기존 LocalDate에서 시간을 추가하거나 빼는것도 가능

LocalDate date = LocalDate.of(2024,07,05);
LocalDate date1 = date.plusWeeks(1);

TemporalAdjuster: 조금 더 복잡한 날짜 변경이 필요할때 사용

import static java.time.temporal.TemporalAdjusters.*;
LocalDate date = LocalDate.of(2024,07,05);
LocalDate date1 = date.with(nextOrSame(DayOfWeek.SUNDAY));

DateTimeFormatter: 날짜 시간을 파싱할 수 있다

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate date = LocalDate.of(2024,07,05);
String formattedDate = date.format(formatter);

다양한 시간대와 캘린더 활용 방법

시간대 사용하기

표준 시간이 같은 지역을 묶어서 시간대 규칙 집합을 정의

ZoneId의 getRules()를 이용해서 해당 시간대의 규정을 획득

ZoneId romeZone = ZoneId.of("Europe/Rome");
LocalDate date = LocalDate.of(2024,07,05);
ZonedDateTime zd = date.atStartOfDay(romeZone);

UTC 기준의 고정 오프셋

ZoneOffset newYorkOffset = ZoneOffset.of("-05:00");
LocalDate date = LocalDate.of(2024,07,05);
OffsetDateTime dateTimeNewYork = OffsetDateTime.of(date, newYorkOffset);
profile
Keep going하는 개발자

0개의 댓글