관리 메뉴

나구리의 개발공부기록

날짜와 시간, 날짜와 시간의 주요 메서드 정리 본문

인프런 - 실전 자바 로드맵/실전 자바 - 중급 1편

날짜와 시간, 날짜와 시간의 주요 메서드 정리

소소한나구리 2025. 1. 22. 11:28

출처 : 인프런 - 김영한의 실전 자바 - 중급1편 (유료) / 김영한님  
유료 강의이므로 정리에 초점을 두고 코드는 일부만 인용


1. 날짜와 시간의 주요 메서드 정리

1) LocalDateTime의 주요 메서드

(1) 생성(Creation)

메서드 설명
now() 현재 시간대의 날짜와 시간을 가지는 LocalDateTime 인스턴스를 반환
of(int year, int month, int dayOfMonth,
int hour, int minute)
주어진 날짜와 시간으로 LocalDateTime 인스턴스를 생성
of(int year, int month, int dayOfMonth,
int hour, int minute, int second)
초를 포함하여 주어진 날짜와 시간으로 LocalDateTime 인스턴스를 생성
of(int year, int month, int dayOfMonth,
int hour, int minute, int second, int nanoOfSecond)
나노초까지 포함하여 주어진 날짜와 시간으로 LocalDateTime 인스턴스를 생성
of(LocalDate date, LocalTime time) LocalDate와 LocalTime을 결합하여 LocalDateTime 인스턴스를 생성
from(TemporalAccessor temporal) 다른 시간 객체로부터 LocalDateTime 객체를 생성

 

(2) 변환

메서드 설명
toLocalDate LocalDateTime 인스턴스의 날짜 부분을 LocalDate로 변환
toLocalTime LocalDateTime 인스턴스의 시간 부분을 LocalTime으로 변환
toEpochSecond(ZoneOffset offset) 주어진 시간대 오프셋을 사용하여 에포크 초로변환

 

(3) 시간대 관련 (Time-Zone)

메서드 설명
atZone(ZoneId zone) 지정된 시간대를 사용하여 ZonedDateTime 인스턴스를 생성

 

(4) 조회 (Query)

메서드 설명
get(TemporalField field) 지정된 필드를 반환하며 주로 Chronofield를 사용함
getYear() 연도를 반환
getMonth() 월을 반환
getDayOfMonth() 일(월의 몇 번째 날)을 반환
getDayOfWeek() 요일을 반환
getHour() 시간을 반환
getSecond() 초를 반환
getNano() 나노초를 반환

 

(5) 비교 (Comparison)

메서드 설명
isBefore(LocalDateTime other) 다른 LocalDateTime보다 이전인지 비교
isAfter(LocalDateTime other) 다른 LocalDateTime보다 이후인지 비교
isEqual(LocalDateTime other) 다른 LocalDateTime과 같은지 비교하며 시간을 기준으로 비교함

 

(6) 수정 (Adjustment)

메서드 설명
with(TemporalField field, long newValue) 지정된 필드를 새 값으로 변경
with(temporalAdjuster adjuster) 제공된 조정기를 사용하여 날짜를 조정
withYear(int year) 연도를 수정
withMonth(int month) 월을 수정
withDayOfMonth(int dayOfMonth) 일(월의 몇 번재 날)을 수정
withHour(int hour) 시간을 수정
withMinute(int minute) 분을 수정
withSecond(int second) 초를 수정
withNano(int nanoOfSecond) 나노초를 수정

 

(7) 추가 (Addition)

메서드 설명
plus(long amountToAdd, TemporalUnit unit) 지정된 시간 단위로 시간을 더함
plus(TemporalAmount amountToAdd) 주어진 시간만큼 더함
plusYears(long years) 연을 더함
plusMonths(long months) 월을 더함
plusWeeks(long weeks) 주를 더함
plusDays(long days) 일수를 더함
plusHours(long hours) 시간을 더함
plusMinutes(long minutes) 분을 더함
plusSeconds(long seconds) 초를 더함
plusNanos(long nanos) 나노초를 더함
동일하게 minusXxx()메서드들도 존재함 위 기능들을 빼는 메서드

 

(8) 포맷팅 (formatting)

메서드 설명
format(DateTimeFormatter formatter) 주어진 포매터를 사용하여 LocalDateTime을 문자열로 변환

2) ZonedDateTime의 주요 메서드

  • LocalDateTime과 중복되는 내용은 제외

(1) 생성 및 변환

메서드 설명
now() 현재 시간대의 현재 날짜와 시간을 가진 ZonedDateTime 객체를 생성
now(ZoneId zoned) 지정된 시간대의 현재 날짜와 시간을 가진 ZonedDateTime 객체를 생성
of(LocalDate date, LocalTime time, ZoneId zone) 주어진 날짜, 시간, 시간대로 ZonedDateTime 객체를 생성
of(LocalDateTime dateTime, ZoneId zone) 주어진 LocalDateTime과 시간대로 zonedDateTime 객체를 생성
of(int year, int month, int dayOfMonth,
int hour, int minute, int second, int nanoOfSecond,
ZoneId zone)
주어진 날짜, 시간, 나노초, 시간대로 ZonedDateTime 객체를 생성

 

(2) 타임존 관리

메서드 설명
withZoneSameInstant(ZoneId zone) 다른 시간대로 시간을 변환하되 절대 시간(UTC)을 유지
withZoneSameLocal(ZoneId zone) 시간대를 변경하되 로컬 날짜와 시간은 그대로 유지
withEarlierOffsetAtOverlap() 겹치는 오프셋(여름 시간제 등)이 있을 때 이전 오프셋을 사용함
withLaterOffsetAtOverlap() 겹치는 오프셋이 있을 때 나중 오프셋을 사용함

 

(3) 조회

메서드 설명
getOffset() 현재 ZonedDateTime 오프셋을 반환
getZone() 현재 ZonedDateTime의 시간대를 반환

 

(4) 기타 유용한 메서드

메서드 설명
toLocalDateTime() ZonedDateTime을 LocalDateTime으로 변환
toInstant() ZonedDateTime을 Instant로 변환
toEpochSecond() 에포크 타임(유닉스 타임)부터 현재 ZonedDateTime 까지의 초 수를 반환

3) Instant의 주요 메서드

  • LocalDateTime과 중복되는 내용은 제외함

(1) 생성

메서드 설명
now() 현재 UTC 기준의 Instant를 반환
ofEpochMilli(long epochMilli) 주어진 에폭시 시간(밀리초)을 기준으로 Instant를 생성
ofEpochSecond(long epochSecond) 주어진 에폭시 시간(초)을 기준으로 Instant를 생성
ofEpochSecond(long epochSecond, long nanoAdjustment) 주어진 에폭시 시간(초)과 나노초 조정값을 기준으로 Instant를 생성

 

(2) 변환

메서드 설명
atOffset(ZoneOffset offset) Instant를 OffsetDateTime으로 변환
atZone(ZoneId zone) Instant를 특정 시간대의 ZonedDateTime으로 변환
toEpochMilli() Instant의 에폭시 시간을 밀리초 단위로 반환

 

(3) 조회

메서드 설명
getEpochSecond() 에폭시 시간을 초 단위로 반환
getNano() 현재 초의 나노초 부분을 반환