Java

[Java]LocalDateTime 값 변경 방법(날짜 및 시간 변경)

DevStory 2022. 8. 13.

LocalDateTime 값 변경 방법

이번 포스팅은 LocalDateTime의 값(날짜 및 시간)을 변경하는 방법을 소개합니다.

 

이번 포스팅에서 소개하는 메서드를 사용하면, LocalDateTime 객체뿐만 아니라 LocalDate, LocalTime 객체의 값을 변경할 수 있습니다.


날짜 변경 방법

LocalDateTime, LocalDate 객체의 날짜(년 / 월 / 일)를 변경하는 방법입니다.

 

withYear()

- LocalDateTime 또는 LocalDate 객체의 연도(year)가 변경된 결과를 반환합니다.

 

withMonth()

- LocalDateTime 또는 LocalDate 객체의 개월(month)이 변경된 결과를 반환합니다.

 

withDayOfMonth()

- LocalDateTime 또는 LocalDate 객체에 설정된 개월의 일(day)이 변경된 결과를 반환합니다.

- 현재 날짜가 2022년 8월 13일인 경우 withDayofMonth() 메서드는 "2022년 8월의 몇 일로 설정할 것인지?"를 의미합니다.

 

withDayOfYear()

- LocalDateTime 또는 LocalDate 객체에 설정된 년도에서 일(day)이 변경된 결과를 반환합니다.

- 현재 날짜가 2022년 8월 13일인 경우 withDayYear() 메서드는 "2022년의 몇 일로 설정할 것인지?"를 의미합니다.

public static void main(String args[]) {
  LocalDate todayLocalDate = LocalDate.now();
  System.out.println("현재 날짜: " + todayLocalDate);

  LocalDate withYearResult = todayLocalDate.withYear(2000);
  System.out.println("todayLocalDate.withYear(2000): " + withYearResult);
 
  LocalDate withMonthResult = todayLocalDate.withMonth(12);
  System.out.println("todayLocalDate.withMonth(12): " + withMonthResult);

  LocalDate withDayOfMonthResult = todayLocalDate.withDayOfMonth(2);
  System.out.println("todayLocalDate.withDayOfMonth(2): " + withDayOfMonthResult);

  LocalDate withDayOfYearResult = todayLocalDate.withDayOfYear(2);
  System.out.println("todayLocalDate.withDayOfYear(2): " + withDayOfYearResult);
}

[실행 결과]

현재 날짜: 2022-08-13
todayLocalDate.withYear(2000): 2000-08-13
todayLocalDate.withMonth(12): 2022-12-13
todayLocalDate.withDayOfMonth(2): 2022-08-02
todayLocalDate.withDayOfYear(2): 2022-01-02

 

만약, 다음과 같이 범위를 벗어나는 경우 DateTimeException이 발생합니다.

- withMonth() 메서드에 전달된 값이 1~12를 벗어나는 경우 에러가 발생합니다.

- 2022년 8월은 31일까지 존재합니다. 따라서, 31을 초과하는 값을 withOfMonth() 메서드에 전달하면 에러가 발생합니다.

 

다음 예제는 withMonth() 메서드에 15를 전달합니다.

public static void main(String args[]) {
  LocalDate todayLocalDate = LocalDate.now();
  System.out.println("현재 날짜: " + todayLocalDate);

  LocalDate withYearResult = todayLocalDate.withMonth(15);
  System.out.println("15월로 변경된 결과: " + withYearResult);
}

 [에러 내용]


시간 변경 방법

LocalDateTime, LocalTime 객체의 시간(시 / 분 / 초 / 나노초)을 변경하는 방법입니다.

 

withHour()

- LocalDateTime 또는 LocalTime 객체의 시간(hour)이 변경된 결과를 반환합니다.

 

withMinute()

- LocalDateTime 또는 LocalTime 객체의 분(minute)이 변경된 결과를 반환합니다.

 

withSecond()

- LocalDateTime 또는 LocalTime 객체의 초(second)가 변경된 결과를 반환합니다.

 

withNano()

- LocalDateTime 또는 LocalTime 객체의 나노초(nanosecond)가 변경된 결과를 반환합니다.

public static void main(String args[]) {
  LocalTime todayLocalTime = LocalTime.now();
  System.out.println("현재 시간: " + todayLocalTime);

  LocalTime withHourResult = todayLocalTime.withHour(10);
  System.out.println("todayLocalTime.withHour(10): " + withHourResult);

  LocalTime withMinuteResult = todayLocalTime.withMinute(45);
  System.out.println("todayLocalTime.withMinute(45): " + withMinuteResult);

  LocalTime withSecondResult = todayLocalTime.withSecond(25);
  System.out.println("todayLocalTime.withSecond(25): " + withSecondResult);

  LocalTime withNanoResult = todayLocalTime.withNano(450000);
  System.out.println("todayLocalTime.withNano(450000): " + withNanoResult);
}

[실행 결과]

현재 시간: 16:58:16.198
todayLocalTime.withHour(10): 10:58:16.198
todayLocalTime.withMinute(45): 16:45:16.198
todayLocalTime.withSecond(25): 16:58:25.198
todayLocalTime.withNano(450000): 16:58:16.000450
반응형

댓글