본문 바로가기

Java

[Java] Calendar 클래스, getInstance() 메서드

반응형

Java Calendar 클래스

Calendar는 추상클래스라서 직접 객체를 생성할 수 없다. 메서드를 통해 완전히 구현된 클래스의 인스턴스를 얻어야 한다. 

 

Calendar cal = Calendar.getInstance();

 

getInstance() 메서드는 java.util.Calendar 클래스에 구현되어 있다. 이 메서드는 Calendar 클래스의 정적 메서드로서, Calendar 클래스의 구현체를 반환한다. getInstance() 메서드는 현재 시스템의 날짜와 시간을 나타내는 Calendar 객체를 반환하는데, 이는 시스템의 기본 로케일과 타임존을 사용하여 생성된다.

Calendar 클래스는 자바 표준 라이브러리인 java.util 패키지에 포함되어 있으며, getInstance() 메서드를 포함한 다양한 메서드를 제공한다. 이 클래스는 날짜와 시간을 다루는 다양한 기능을 제공하며, 날짜 및 시간 연산, 포맷팅, 파싱 등을 수행할 수 있다.

아래는 getInstance() 메서드를 사용하여 Calendar 클래스의 구체적인 인스턴스를 얻는 예시

 

import java.util.Calendar;

Calendar cal = Calendar.getInstance();

 

위 예시에서 cal 변수는 Calendar 클래스의 인스턴스다. getInstance() 메서드를 호출하여 현재 시스템의 날짜와 시간을 나타내는 Calendar 객체를 얻고, 이를 cal 변수에 할당했다. 

 

예제

package Calandar;
import java.util.*;

public class Calendar1 {
	public static void main(String[] args) {
		Calendar today = Calendar.getInstance();
		System.out.println("이 해의 년도 : " + today.get(Calendar.YEAR));
	 	System.out.println("월(0~11, 0:1월): " + today.get(Calendar.MONTH));
	  	System.out.println("이 해의 몇 째 주: " 
                                    + today.get(Calendar.WEEK_OF_YEAR)); 
		System.out.println("이 달의 몇 째 주: " 
                                    + today.get(Calendar.WEEK_OF_MONTH));
		// DATE와 DAY_OF_MONTH는 같다.
	 	System.out.println("이 달의 몇 일: " + today.get(Calendar.DATE));
	 	System.out.println("이 달의 몇 일: " + today.get(Calendar.DAY_OF_MONTH));
		System.out.println("이 해의 몇 일: " + today.get(Calendar.DAY_OF_YEAR));
	  	System.out.println("요일(1~7, 1:일요일): " 
		 + today.get(Calendar.DAY_OF_WEEK)); // 1:일요일, 2:월요일, ... 7:토요일
	 	System.out.println("이 달의 몇 째 요일: "
                               + today.get(Calendar.DAY_OF_WEEK_IN_MONTH));
		System.out.println("오전_오후(0:오전, 1:오후): "
                               + today.get(Calendar.AM_PM));
		System.out.println("시간(0~11): " + today.get(Calendar.HOUR));
		System.out.println("시간(0~23): " + today.get(Calendar.HOUR_OF_DAY));
		System.out.println("분(0~59): " + today.get(Calendar.MINUTE));
		System.out.println("초(0~59): " + today.get(Calendar.SECOND));
		System.out.println("1000분의 1초(0~999): " 
                                      + today.get(Calendar.MILLISECOND));
 		// 천분의 1초를 시간으로 표시하기 위해 3600000으로 나누었다.(1시간 = 60 * 60초)
		System.out.println("TimeZone(-12~+12): " 
                    + (today.get(Calendar.ZONE_OFFSET)/(60*60*1000))); 
		System.out.println("이 달의 마지막 날: " 
            + today.getActualMaximum(Calendar.DATE) ); // 이 달의 마지막 일을 찾는다.
	}
}

 

출력 결과 

더보기

이 해의 년도 : 2023
월(0~11, 0:1월): 6
이 해의 몇 째 주: 28
이 달의 몇 째 주: 3
이 달의 몇 일: 11
이 달의 몇 일: 11
이 해의 몇 일: 192
요일(1~7, 1:일요일): 3
이 달의 몇 째 요일: 2
오전_오후(0:오전, 1:오후): 1
시간(0~11): 1
시간(0~23): 13
분(0~59): 43
초(0~59): 26
1000분의 1초(0~999): 618
TimeZone(-12~+12): 9
이 달의 마지막 날: 31

현재 시간 및 날짜에 따라 결과가 정해진다. 


Calendar 클래스는 Java의 기본적인 시간 및 날짜 처리를 위한 클래스다. Java 8부터는 java.time 패키지에서 더 향상된 시간 및 날짜 API인 LocalDate, LocalTime, LocalDateTime 등을 제공한다. 필요에 따라 새로운 API를 사용하는 것이 좋다. 

반응형