반응형

이번 글은 Java에서 오늘 날짜를 기준으로 N개월 전, N개월 후의 데이터를 계산하는 방법에 대해 글을 기록한다. SAP와 인터페이스를 하면서, 오늘 날짜를 기준으로 3개월 전 범위까지의 데이터를 가져와야 하는데, 적용했던 방법에 대해 글을 기록한다.


목차

1. 날짜 계산하는 방법
2. 소스 코드

1. 날짜 계산하는 방법

Java에서 날짜 계산하는 방법 중 하나인 java.util 패키지 안에 있는 Calendar를 사용하는 방법이다.

 

1) Calendar 인스턴스 생성

Calendar cal = Calendar.getInstance();

cal이라는 변수로 Calendar의 인스턴스를 생성한다.

 

2) 날짜 형식 설정

SimpleDateFormat  dateFormat = new SimpleDateFormat("yyyyMMdd");

일단 날짜 데이터를 yyyymmdd 형식으로 가져오고 싶어서, 위와 같이 SimpleDateFormat을 통해 yyyyMMdd 형식으로 설정한다.

 

3) 원하는 날짜 설정하기

cal.add(Calendar.MONTH, -3);

위의 코드는 3개월 전의 날짜를 설정하는 방법이다. 여기서 3개월 후의 데이터를 가져가고 싶으면 아래와 같이 사용하면 된다.

cal.add(Calendar.MONTH, 3);

 

4) 설정한 날짜의 Date 가져오기

Date date = new Date(cal.getTimeInMillis());

위의 Date에 대한 객체는 KST 형식으로 데이터를 가져 온다. KST 형식의 데이터로 가져와서 사용하기는 너무 힘드니, 위에서 설정한 날짜 형식 데이터를 설정한 것을 가지고 다시 포맷을 설정해서 사용한다.

 

5) 포맷에 맞게 데이터 가져오기

String todayDate = dateFormat.format(new Date());
String preDate = dateFormat.format(date);
preDate = preDate.substring(0,6) + "01";

위의 todayDate의 경우에는 new Date()를 사용할 시 현재 시간 기준으로 KST 형식 날짜 데이터를 받는다. 그렇기에, dateFormat에서 설정한 format을 설정하여 String형 변수를 가져오고, 아까 위에서 3시간을 뺀 데이터를 preDate로 받는다.

 

맨 마지막의 preDate의 데이터 전처리는 3개월 전을 빼고, 그 달의 1일로 바꿔주는 것인데, 저거 다른 방법이 있는데 빨리 해결해야 하는 거라서 위와 같이 사용했다.

 

2. 소스 코드

위의 소스 코드를 다 종합하면 아래와 같다.

Calendar cal = Calendar.getInstance();
SimpleDateFormat  dateFormat = new SimpleDateFormat("yyyyMMdd");
		
cal.add(Calendar.MONTH, -3);
		
Date date = new Date(cal.getTimeInMillis());
		
String todayDate = dateFormat.format(new Date());
String preDate = dateFormat.format(date);
preDate = preDate.substring(0,6) + "01";

 

이렇게 해서, 날짜 형식의 데이터를 계산할 수 있고, 월 뿐만 아니라 년도, 일도 바꿀 수 있다.


 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기