Java

Calendar 클래스로 날짜 계산하기

심나라 2022. 9. 4. 16:50
728x90

Calendar 클래스는 날짜와 시간을 다루는 클래스 입니다. String 데이터의 날짜를 계산하는 소스 입니다. 

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateSample {

	public static void main(String[] args) throws ParseException {
		
		String test = "2022-08-30";
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
				
		//String을 날짜 연산을 위해 Date 객체로 변경
		Date date = sdf.parse(test);
		
		//날짜 연산을 위한 Calendar 객체 생성 후 date 대입
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		
		
		System.out.println("현재일시 : " + sdf2.format(cal.getTime()));
		
		cal.add(Calendar.MILLISECOND, 10);
		System.out.println("10밀리초 더하기 : " + sdf2.format(cal.getTime()));
		
		cal.add(Calendar.MINUTE, 10);
		System.out.println("10분 더하기 : " + sdf2.format(cal.getTime()));
		
		cal.add(Calendar.HOUR, 1);
		System.out.println("1시간 더하기 : " + sdf2.format(cal.getTime()));
		
		cal.add(Calendar.HOUR, -1);
		System.out.println("1시간 빼기 : " + sdf2.format(cal.getTime()));
		
		cal.add(Calendar.DATE, 1);
		System.out.println("1일 더하기 : " + sdf.format(cal.getTime()));
		
		cal.add(Calendar.DATE, -1);
		System.out.println("1일 빼기 : " + sdf.format(cal.getTime()));
		
		cal.add(Calendar.MONTH, 1);
		System.out.println("1달 더하기 : " + sdf.format(cal.getTime()));
		
		cal.add(Calendar.YEAR, 1);
		System.out.println("1년 더하기 : " + sdf.format(cal.getTime()));
		
		cal.add(Calendar.YEAR, -1);
		System.out.println("1년 빼기 : " + sdf.format(cal.getTime()));
		
		cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
		System.out.println("해당 일자가 있는 주의 월요일 구하기 : " + sdf.format(cal.getTime()));
		
		cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
		System.out.println("해당 월의 마지막날 구하기 : " + sdf.format(cal.getTime()));
	
		System.out.println("해당 월의 마지막날의 요일 구하기(1:일요일 ~ 7:토요일) : "+ cal.get(Calendar.DAY_OF_WEEK));
	}
}

 

Calendar 클래스의 주요상수

상수 사용예시 설명
static int YEAR Calendar.YEAR 현재 년도
static int MONTH Calendar.MONTH 현재 월
static int DATE Calendar.DATE 현재 월의 날짜
static int WEEK_OF_YEAR Calendar.WEEK_OF_YEAR 현재 년도의 몇째 주
static int WEEK_OF_MONTH Calendar.WEEK_OF_MONTH 현재 월의 몇째 주
static int DAY_OF_YEAR Calendar.DAY_OF_YEAR 현재 년도의 날짜
static int DAY_OF_MONTH Calendar.DAY_OF_MONTH 현재 월의 날짜
static int DAY_OF_WEEK Calendar.DAY_OF_WEEK 현재 요일(1:일요일, 7:토요일)
static int HOUR Calendar.HOUR 현재 시간(0~12)
static int HOUR_OF_DAY Calendar.HOUR_OF_DAY 현재 시간(0~23)
static int MINUTE Calendar.MINUTE 현재 분
static int SECOND Calendar.SECOND 현재 초

 

Calendar 클래스의 주요 메소드

메소드 설명
static Calendar getInstance() 현재 날짜와 시간 정보를 가진 Calendar 객체를 생성
boolean after(Object when) when이 현재 날짜 이후이면 true를 반환
boolean before(Object when) when이 현재 날짜 이전이면 true를 반환
boolean equals(Object obj) 같은 날짜이면 true를 반환
Date getTime() 현재 객체를 Date 객체로 변환
void set(int field, int value) 현재 객체의 특정 필드를 다른 값으로 설정
void set(int year, int month, int date) 현재 객체의 년, 월, 일 값을 다른 값으로 설정
void set(int year, int month, int date, int hour, int minute, int second) 현재 객체의 년, 월, 일, 시, 분, 초 값을 다른 값으로 설정
void setTime(Date date) date 객체의 날짜와 시간 정보를 현재 객체로 생성

 

728x90