본문 바로가기
프로그래밍/자바(Java)

[Java] 자바 년월일 더하고 빼는 방법

by imfireguy 2022. 2. 17.
반응형

@towfiqu-barbhuiya-JhevWHCbVyw unsplash

자바 연월일 더하고 빼는 방법

SimpleDateFormat을 통해 포맷을 변환시켜주고, Calendar 객체의 add 메서드를 사용해서 원하는 날짜를 계산할 수 있습니다.  

더한 날짜의 경우 그냥 숫자를 사용하면 되고 이전 날짜를 구하는 경우에는 숫자에 -를 붙여서 넣으면 됩니다.

package com.example.demo;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateCalculation {
	
	private static String CalculationDate(String sttDate, int year, int month , int day) throws ParseException {
		
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
		
		Calendar cal = Calendar.getInstance();
		
		Date date = sdf.parse(sttDate);
		
		cal.setTime(date);
		
		cal.add(Calendar.YEAR, year);
		cal.add(Calendar.MONTH, month);
		cal.add(Calendar.DATE, day);
		
		return sdf.format(cal.getTime());
	}
	

	public static void main(String[] args) throws Exception{
			
		String date = "20220217";
		
		// 1년 후 날짜 구하기
		String addYear = CalculationDate(date, 1, 0, 0);
		
		// 1년 전 날짜 구하기
		String minusYear = CalculationDate(date, -1, 0, 0);
		
		// 1달 후 날짜 구하기 
		String addMonth = CalculationDate(date, 0, 1, 0);
		
		// 1달 전 날짜 구하기 
		String minusMonth = CalculationDate(date, 0, -1, 0);
		
		// 1일 후 날짜 
		String addDay = CalculationDate(date, 0, 0, 1);
		
		// 1일 전 날짜 
		String minusDay = CalculationDate(date, 0, 0, -1);
		
		System.out.println("1년 후 날짜 구하기:  " + addYear);
		System.out.println("1년 전 날짜 구하기:  " + minusYear);
		
		System.out.println("1달 후 날짜 구하기:  " + addMonth);
		System.out.println("1달 전 날짜 구하기:  " + minusMonth);
		
		System.out.println("1일 후 날짜 구하기:  " + addDay);
		System.out.println("1일 전 날짜 구하기:  " + minusDay);
		
	}

}

 

▼계산 결과

 

SimpleDateFormat 사용 시 주의점

SimpleDateFormat sdf = new SimpleDateFormat("YYYYMMDD"); 이렇게 선언해서 사용을 하니 시간 계산이 이상하게 나왔습니다.

 

표기는 "yyyyMMdd"를 사용해야 됩니다.

그리고 추가로 검색해보니 주의할 점을 정리해보겠습니다.

 

문자 의미 비고
yyyy 연도 소문자 사용
MM 소문자 사용 시 분 출력
dd 일(해당 월 기준) 일반적인 일 출력
DD 일(해당 년도 기준) 많은 수 출력
a am/pm(오전/오후) 소문자 사용
H 시(24시간 기준)  
h 시(24시간 기준)  
mm 대문자 사용 시 월이 출력
s  
S 밀리초(milisecond) 1/1000초 기준
반응형

댓글