이번 글은 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";
이렇게 해서, 날짜 형식의 데이터를 계산할 수 있고, 월 뿐만 아니라 년도, 일도 바꿀 수 있다.
'Language > Java' 카테고리의 다른 글
[Java] Java SAP RFC 호출 시 락 걸리는 문제 해결하는 방법 (0) | 2023.09.18 |
---|---|
[Java] Java 다중 이미지 첨부파일(img) 업로드하여 메일 전송하기(SMTP) - 1 (0) | 2023.08.09 |
[Java] Java SAP와 RFC 인터페이스 통신에 대한 정리(Map/Table) (0) | 2023.06.26 |
[프로그래머스] 등차수열의 특정한 항만 더하기 자바(JAVA) (0) | 2023.06.07 |
[Java] java.lang.OutOfMemoryError: Java heap space 문제 해결하는 방법 (0) | 2023.06.02 |
[Java] Java 트랜잭션 예외 발생 시 DB에 예외 데이터 처리 하는 방법 (0) | 2023.06.01 |
[Java] Java KST 시간에서 연월일 추출하는 방법 (0) | 2023.06.01 |
[Java] Java 트랜잭션 롤백 예외 처리 하는 방법 (0) | 2023.05.25 |
최근댓글