본문 바로가기

자바공부

자바 Calendar 클래스 개념 공부

728x90
반응형

* Callendar 클래스는 java.util 패키지에 있는 추상 클래스로서 년, 월, 일, 요일, 시간, 분, 초, 밀리초까지 프로그램이 실행되는 동안 개발자가 기억하고자 하는 시간과 날짜 정보를 저장하여 set(), get() 메소드를 이용하여 날짜나 시간을 알아내거나 설정한다.

주의할 점은 Calendar로 컴퓨터의 현재 시간을 알아낼 수는 있지만, Calendar 객체에 날짜와 시간을 설정한다고 해서 현재 컴퓨터의 시간을 바꾸지는 못한다는 것이다. 

개발자는 프로그램 실행 동안에 자신이 기억하고 싶은 날짜와 시간을 관리하기 위해 Calendar 객체를 이용한다.

 

* Calendar 클래스의 get(), set()에 사용되는 static 상수

필드 의미
YEAR 년도
MONTH 달(0~11)
HOUR 시간(0~11)
HOUR_OF_DAY 24시간을 기준으로 한 시간
SECOND
DAY_OF_MONTH 한 달의 날짜
DAY_OF_WEEK 한 주의 요일
AM_PM 오전인지 오후인지 구분
MINUTE
MILLISECOND 밀리초

 

* Calendar 클래스는 추상 클래스이므로, new Calendar()를 사용하지 않고 getInstance() 메소드를 사용한다.

Calendar now = Calendar.getInstance();

getInstance()가 리턴한 now 객체는 현재 날짜와 시간 정보를 가진다.

 

* Calendar를 활용하여 현재 날짜와 시간 알아내기/ 날짜 시간 설정하기

import java.util.Calendar;

public class CalendarEx {
	public static void printCalendar(String msg, Calendar cal) {
		int year = cal.get(Calendar.YEAR);
		int month = cal.get(Calendar.MONTH) + 1; // get()은 0~30까지의 정수 리턴
		int day = cal.get(Calendar.DAY_OF_MONTH);
		int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
		int hour = cal.get(Calendar.HOUR);
		int hourOfDay = cal.get(Calendar.HOUR_OF_DAY);
		int ampm = cal.get(Calendar.AM_PM);
		int minute = cal.get(Calendar.MINUTE);
		int second = cal.get(Calendar.SECOND);
		int millisecond = cal.get(Calendar.MILLISECOND);
		System.out.print(msg + year + "/" + month + "/" + day + "/");
		
		switch(dayOfWeek) {
		case Calendar.SUNDAY : System.out.print("일요일"); break;
		case Calendar.MONDAY : System.out.print("월요일"); break;
		case Calendar.TUESDAY : System.out.print("화요일"); break;
		case Calendar.WEDNESDAY : System.out.print("수요일"); break;
		case Calendar.THURSDAY : System.out.print("목요일"); break;
		case Calendar.FRIDAY : System.out.print("금요일"); break;
		case Calendar.SATURDAY : System.out.print("토요일"); break;
		}
		System.out.print("(" + hourOfDay + "시)");
		if(ampm==Calendar.AM)
			System.out.print("오전");
		else
			System.out.print("오후");
		
		System.out.println(hour + "시 " + minute + "분 " + second + "초 " + millisecond + "밀리초");
	}
	
	
	public static void main(String[] args) {
		Calendar now = Calendar.getInstance();
		printCalendar("현재", now);
		
		Calendar firstDate = Calendar.getInstance();
		firstDate.clear();
		firstDate.set(2016,11,25); // 2016년 12월 25일. 12월을 표현하기 위해 month에 11로 설정
		firstDate.set(Calendar.HOUR_OF_DAY, 20); // 저녁 8시
		firstDate.set(Calendar.MINUTE, 30); // 30분
		printCalendar("처음 데이트한 날은", firstDate);
	}
}

실행 결과

 

현재2022/5/31/화요일(20시)오후8시 20분 31초 823밀리초
처음 데이트한 날은2016/12/25/일요일(20시)오후8시 30분 0초 0밀리초

반응형