[Java] LocalDateTime 클래스와 주요 메서드

Henson·2024년 11월 1일

Java

목록 보기
11/22
post-thumbnail

LocalDateTime 클래스

가장 기본이 되는 날짜와 시간 클래스는 LocalDate , LocalTime , LocalDateTime 이다.

  • LocalDate: 날짜만 표현할 때 사용한다. 년, 월, 일을 다룬다. 예) 2013-11-21
  • LocalTime: 시간만을 표현할 때 사용한다. 시, 분, 초를 다룬다. 예) 08:20:30.213
    초는 밀리초, 나노초 단위도 포함할 수 있다.
  • LocalDateTime: LocalDateLocalTime 을 합한 개념이다. 예) 2013-11-21T08:20:30.213

앞에 Local (현지의, 특정 지역의)이 붙는 이유는 세계 시간대를 고려하지 않아서 타임존이 적용되지 않기 때문이다.
특정 지역의 날짜와 시간만 고려할 때 사용한다.

LocalDateTime 주요 메서드

생성

  • 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) : LocalDateLocalTime 을 결합하여 LocalDateTime 인스턴스를 생성한다.
  • from(TemporalAccessor temporal) : 다른 시간 객체로부터 ZonedDateTime 객체를 생성
    한다.

변환

  • toLocalDate() : LocalDateTime 인스턴스의 날짜 부분을 LocalDate
    로 변환한다.
  • toLocalTime() : LocalDateTime 인스턴스의 시간 부분을 LocalTime
    로 변환한다.
  • toEpochSecond(ZoneOffset offset) : 주어진 시간대 오프셋을 사용하여 에포크 초로 변환한다.

시간대 관련

  • atZone(ZoneId zone) : 지정된 시간대를 사용하여 ZonedDateTime 인스턴스를 생성한다.

조회

  • get(TemporalField field) : 지정된 필드를 반환한다. 주로 ChronoField 를 사용한다.
  • getYear() : 연도를 반환한다.
  • getMonth() : 월을 반환한다.
  • getDayOfMonth() : 일(월의 몇 번째 날)을 반환한다.
  • getDayOfWeek() : 요일을 반환한다.
  • getHour() : 시간을 반환한다.
  • getMinute() : 분을 반환한다.
  • getSecond() : 초를 반환한다.
  • getNano() : 나노초를 반환한다.

비교

  • isBefore(LocalDateTime other) : 다른 LocalDateTime 보다 이전인지 비교한다.
  • isAfter(LocalDateTime other) : 다른 LocalDateTime 보다 이후인지 비교한다.
  • isEqual(LocalDateTime other) : 다른 LocalDateTime 과 같은지 비교한다. 시간을 기준으로 비교한다.

isEqual() vs equals()

  • isEqual() 는 단순히 비교 대상이 시간적으로 같으면 true 를 반환한다. 객체가 다르고, 타임존이 달라도 시간적으로 같으면 true 를 반환한다. 쉽게 이야기해서 시간을 계산해서 시간으로만 둘을 비교한다.
    • 예) 서울의 9시와 UTC의 0시는 시간적으로 같다. 이 둘을 비교하면 true 를 반환한다.
  • equals() 객체의 타입, 타임존 등등 내부 데이터의 모든 구성요소가 같아야 true 를 반환한다.
    • 예) 서울의 9시와 UTC의 0시는 시간적으로 같다. 이 둘을 비교하면 타임존의 데이터가 다르기 때문에 false 를 반환한다.

수정

  • 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) : 나노초를 수정한다.

추가

  • 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) : 나노초를 더한다.

포맷팅

  • format(DateTimeFormatter formatter) : 주어진 포매터를 사용하여 LocalDateTime 을 문자열로 변환한다.
profile
세계 최고의 개발자가 되고 말겠어.

0개의 댓글