Java/자바 정리
113. 날짜와 시간 계산도 쉽다! – LocalDateTime과 날짜 연산
코딩하는냥이
2025. 5. 14. 12:36
반응형
이번 글에서는 LocalDateTime 클래스를 사용해 현재 시간 정보를 가져오고,
연도/월 단위의 덧셈과 뺄셈을 통해 시간 계산을 하는 방법을 배워봅니다.
또한 DateTimeFormatter를 활용해 날짜를 보기 좋은 문자열로 출력하는 방법도 함께 실습합니다.
📌 예제 코드
import java.time.*;
import java.time.format.DateTimeFormatter;
public class DateTimeOperationExample {
public static void main(String[] args) {
LocalDateTime time = LocalDateTime.now(); // 현재 날짜 및 시간
DateTimeFormatter format = DateTimeFormatter.ofPattern("\"yyyy년 MM월 dd일 HH시 mm분 ss초\"");
System.out.println("현재 시간 : " + time.format(format));
time = time.plusYears(1); // 1년 추가
System.out.println("1년 덧셈 : " + time.format(format));
time = time.minusYears(1); // 다시 1년 빼기 (원래대로)
time = time.minusMonths(2); // 2달 빼기
System.out.println("2월 뺄셈 : " + time.format(format));
time = time.plusMonths(2); // 다시 2달 더하기 (원래대로)
time = time.plusYears(7); // 7년 추가
System.out.println("7년 덧셈 : " + time.format(format));
}
}
💻 실행 결과 (시간은 실행 시점에 따라 달라짐)
현재 시간 : "2025년 05월 13일 14시 58분 10초"
1년 덧셈 : "2026년 05월 13일 14시 58분 10초"
2월 뺄셈 : "2025년 03월 13일 14시 58분 10초"
7년 덧셈 : "2032년 03월 13일 14시 58분 10초"
💬 코드 설명
- LocalDateTime.now()는 시스템의 현재 날짜와 시간을 가져옵니다.
- DateTimeFormatter.ofPattern(...)을 통해 "yyyy년 MM월 dd일 ..." 형식으로 날짜를 포맷팅합니다.
- plusYears(), minusYears(), plusMonths(), minusMonths()는 시간 단위별로 더하고 빼는 메서드입니다.
- 날짜/시간 객체는 불변(immutable)이므로, 연산 결과를 다시 time 변수에 저장해야 변경 내용이 반영됩니다.
💡 포인트 정리
- LocalDateTime은 날짜와 시간 정보를 모두 다루는 자바 8의 대표 클래스입니다.
- 시간 계산 시 기존 객체를 수정하지 않고 새로운 객체로 결과를 반환합니다.
- DateTimeFormatter는 날짜 포맷을 자유롭게 지정할 수 있어 UI 표시, 로그 출력 등에 유용합니다.
- "yyyy년 MM월 dd일 HH시 mm분 ss초"와 같이 한글 포함 포맷도 문제없이 사용할 수 있습니다.
📌 정리하자면,
LocalDateTime과 DateTimeFormatter를 함께 사용하면 날짜/시간 정보의 조작과 출력이 매우 직관적이고 간결합니다.
특히 날짜 연산이 필요한 일정 관리, 만료일 계산, 예약 기능 구현 등에 정확하고 효율적인 처리 방식으로 널리 사용됩니다.