본문 바로가기

Java

JAVA/자바/Calendar 클래스/

 Calendar 클래스는 SingleTone 패턴으로 설계된 클래스로, 객체를 만들어 사용할 수 없다. 객체를 만들어 사용할 수 없는 SingleTone 패턴 설계 클래스는 클래스 내부에 자신으로 만든 객체를 포함하고 있어서 클래스 내부에 가지고 있는 자신의 객체를 얻어오는 메소드를 실행해 자신의 객체를 얻어와서 사용한다.
 Calendar calendar = new Calendar(); => new 를 사용해서 객체를 생성할 수 없어서 에러가 발생된다.

 

+ 싱글톤 패턴(SingleTone Pattern) : 대표적으로 Calendar 객체나 dataSource 객체처럼 객체가 하나만 생성되어야 하는 경우,  전체 코드에서 하나의 객체만 존재할 수 있도록 이미 생성된 객체가 있으면 그 객체를 사용하도록 하는 방식이다.

 

Calendar calendar = Calendar.getInstance();
System.out.println(calendar);

- 출력 :

java.util.GregorianCalendar[time=1579507954124,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="GMT+09:00",offset=32400000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2020,MONTH=0,WEEK_OF_YEAR=4,WEEK_OF_MONTH=4,DAY_OF_MONTH=20,DAY_OF_YEAR=20,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=5,HOUR_OF_DAY=17,MINUTE=12,SECOND=34,MILLISECOND=124,ZONE_OFFSET=32400000,DST_OFFSET=0]

 

 위에 출력한 값에서 볼 수 있듯이 Calendar 클래스 객체는 날짜 및 시간 정보 이외에도 많은 정보를 가지고 있기 때문에, SimpleDateFormat 클래스 객체를 이용해 서식을 지정하려면 getTime() 메소드로 날짜 및 시간 정보만 얻어와서 처리해야 한다.

 getTime() : Calendar 클래스 객체에서 날짜 및 시간 정보만 얻어온다.

 

 

System.out.println(calendar.getTime());			// Mon Jan 20 17:16:24 GMT+09:00 2020
System.out.println("년 : " + calendar.get(Calendar.YEAR));		// 상수는 대문자로, 년 : 2020 
System.out.println("월 : " + (calendar.get(Calendar.MONTH) + 1));	// 월은 + 1, 월 : 1
System.out.println("일 : " + calendar.get(Calendar.DATE));		// 일 : 20 (1년기준)
System.out.println("일 : " + calendar.get(Calendar.DAY_OF_MONTH));	// 일 : 20 (한달기준)
System.out.println("요일 : " + calendar.get(Calendar.DAY_OF_WEEK));	// 일요일 => 1, 월요일 => 2, ..., 토요일 => 7
System.out.println("시(12시각) : " + calendar.get(Calendar.HOUR));	//시(12시각) : 5
System.out.println("시(24시각) : " + calendar.get(Calendar.HOUR_OF_DAY));//시(24시각) : 17
System.out.println("분 : " + calendar.get(Calendar.MINUTE));		// 분 : 16
System.out.println("초 : " + calendar.get(Calendar.SECOND));		// 초 : 24
System.out.println("밀리초 : " + calendar.get(Calendar.MILLISECOND));	// 밀리초 : 515