YYYYMMDD 형태로 문자열을 입력받았을 때, 날짜를 계산할 수 있는 코드입니다.
공통 함수로 뽑아 사용하면 좋을 듯 합니다.
package com.company;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
public class DateTest {
public static void main(String[] args) {
Calendar cal = new GregorianCalendar(Locale.KOREA); // 국제표준시(한국 기준)
SimpleDateFormat transFormat = new SimpleDateFormat("yyyyMMdd");
String dateValue = "20190101";
Date to = null;
try {
to = transFormat.parse(dateValue);
System.out.println("날짜 형태로 변환 >> " + to);
cal.setTime(to);
//cal.add(Calendar.YEAR, 1);
//cal.add(Calendar.MONTH, 1);
cal.add(Calendar.DAY_OF_YEAR, -1);
//cal.add(Calendar.HOUR, 1);
SimpleDateFormat fm = new SimpleDateFormat("yyyyMMdd");
String strDate = fm.format(cal.getTime());
System.out.println("문자열 형태로 변환 >> " + strDate);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
문자열의 날짜를 날짜 타입으로 변환 후 계산하였고, 다시 문자열로 변환하였습니다.
사용자 용도에 따라 -1 이 들어간 곳에 변수를 던지거나 값을 변경하여 쓰면 됩니다.
계산이 이루어지는 과정은 아래 코드를 통해 cal 인스턴스에 add함으로써 날짜 계산이 됩니다.
(Calendar.YEAR, 1) : 1년을 더한다.
(Calendar.MONTH , 1) : 한달을 더한다.
(Calendar.Day_OF_YEAR , 1) : 하루를 더한다.
(Calendar.Hour , 1) : 1시간을 더한다.
+ 피드백은 언제나 환영입니다 :)