java.util.Calendar 클래스

java.util.Calendar 클래스는 날짜와 시간을 객체 모델링화 한 클래스로 연, 월, 일, 요일, 시, 분, 초 까지의 시간 및 날짜와 관련된 정보를 제공한다. 그리고, Calendar 클래스는 추상 클래스이므로 직접 객체를 생성할 수 없으며 실제적인 메소드 구현은 Calendar 클래스의 서브 클래스인  GregorianCalendar 클래스에 정의되어 있다.

 

시스템으로부터 현재 시스템 시간 정보를 얻어올 때 getInstance() 라는 정적(static) 메소드를 이용하여 객체를 생성할 수 있다. 생성된 Calendar 클래스 객체는 시스템의 현재 날짜와 시간 정보를 가지며, 이 객체가 생성되면 갖고 있는 시간 정보들은 get() 메소드를 이용하여 쉽게 가져올(사용할)수 있다.

getInstance() 메소드는 내부적으로 GregorianCalendar 객체를 생성하여 돌려주기 때문에 GregorianCalendar 객체를 직접 생성하여 시간 정보를 구할 수도 있다.

 

※ Calendar 클래스는 추상 클래스이기 때문에 객체를 생성할 수 없다.
   (추상 클래스 : 미완성된 클래스)

   Calendar cal = new Calendar();
   → 이와 같은 구문을 통해 인스턴스 생성이 불가.

○ Calendar 클래스 객체(인스턴스)를 생성할 수 있는 방법

   1. Calendar cal = Calendar.getInstance();

   2. Calendar cal = new GregorianCalendar();

   3. GregorianCalendar cal = new GregorianCalendar();

   (※ GregorianCalendar : Calendar 클래스의 하위 클래스)


import java.util.Calendar;
import java.util.GregorianCalendar;

public class Test147
{
	public static void main(String[] args)
	{
		// Calendar 클래스 기반 인스턴스 생성
		//Calendar rightNow = new Calendar();	// 인스턴스 생성 불가
		Calendar rightNow = Calendar.getInstance();
		
		// 생성된 달력(Calendar) 인스턴스를 통해
		// 날짜 관련 정보를 얻어낼 수 있는 메소드 → 『get()』
		int y = rightNow.get(Calendar.YEAR);
		System.out.println(y);
		//--==>> 2020

		int m = rightNow.get(Calendar.MONTH)+1;		//-- check~!!!
													//   가져올 때는 『+1』
													//	 설정할 때는 『-1』
	
		System.out.println(m);
		//--==>> 8 

		int d = rightNow.get(Calendar.DATE);
		System.out.println(d);
		//--==>> 27

		int w = rightNow.get(Calendar.DAY_OF_WEEK);
		System.out.println(w);

		
		/*
		// 테스트(확인)
		System.out.println(Calendar.SUNDAY);	//--==>>  1 → 일요일
		System.out.println(Calendar.MONDAY);	//--==>>  2 → 월요일
		System.out.println(Calendar.TUESDAY);	//--==>>  3 → 화요일
		System.out.println(Calendar.WEDNESDAY);	//--==>>  4 → 수요일
		System.out.println(Calendar.THURSDAY);	//--==>>  5 → 목요일
		System.out.println(Calendar.FRIDAY);	//--==>>  6 → 금요일
		System.out.println(Calendar.SATURDAY);	//--==>>  7 → 토요일
		*/

		System.out.println(y + "-" + m + "-" + d + " " + w);
		//--==>> 2020-8-27 5

		String week = "";
		switch (w)
		{
			//case 1: week = "일요일"; break
			case Calendar.SUNDAY: week = "일요일"; break;

			//case 2: week = "월요일"; break
			case Calendar.MONDAY: week = "월요일"; break;
		
			//case 3: week = "화요일"; break
			case Calendar.TUESDAY: week = "화요일"; break;

			//case 4: week = "수요일"; break
			case Calendar.WEDNESDAY: week = "수요일"; break;

			//case 5: week = "목요일"; break
			case Calendar.THURSDAY: week = "목요일"; break;

			//case 6: week = "금요일"; break
			case Calendar.FRIDAY: week = "금요일"; break;

			//case 7: week = "토요일"; break
			case Calendar.SATURDAY: week = "토요일"; break;
		}

		System.out.println(y + "-" + m + "-" + d + " " + week);
		//--==>> 2020-8-27 목요일
		
		///////////////////////////////////////////////////////////////////////////

		//Calendar 클래스 인스턴스 생성
		Calendar rightNow2 = new GregorianCalendar();

		String[] week2 = {"일요일","월요일","화요일","수요일","목요일","금요일","토요일"};

		
		// 달력의 날짜 세팅 → 『set()』 메소드 활용
		rightNow2.set(2020,9,20); // 10월      -- check~!!!

		System.out.println(rightNow2.get(Calendar.DAY_OF_WEEK));
		//--==>> 3  → 화요일
		//-- 2020년 10월 20일은 화요일~!!!

		System.out.println(week2[rightNow2.get(Calendar.DAY_OF_WEEK)-1]);
		//--==>> 화요일


		// 달력의 날짜 세팅
		rightNow2.set(1994,5,3);	// 1994-06-03

		System.out.println(week2[rightNow2.get(Calendar.DAY_OF_WEEK)-1]);
		//--==>> 금요일

	}
}

+ Recent posts