ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] 유틸리티 API (4) java.utilDate / java.util.Calendar 클래스
    IT/개발(자바, 서블릿, 스프링 등) 2020. 1. 19. 22:56

    Date 클래스

    Date는 시스템의 날짜와 시간 정보를 가지는 API다. 여러 국가들의 날짜 형식을 지원하지 않는다. 간단한 날짜와 시간 정보가 필요할 때 사용한다. Date 객체를 생성할 땐 기본 생성자를 사용하고, 생성된 Date 객체의 날짜 시간 정보를 문자열로 변환할 땐 Date의 toString() 메서드를 사용한다.

     

    Date date = new Date();

    String date_string = d.toString();

     

    Calendar 클래스

    Calendar는 날짜와 시간 정보를 설정하여 사용하는 API다. 날짜와 시간은 타임존과 로케일(locale)에 따라 다르게 지정할 수 있으므로 Calendar에는 날짜, 시간 처리에 관한 기본적인 메서드만 존재하고, 기본적인 날짜와 시간 정보는 설정해서 사용할 수 있도록 추상 클래스로 선언되어 있다. Calendar는 추상 클래스이므로 new 명령문으로 생성하지 못하고 아래와 같이 Calendar에서 제공하는 getInstance()의 메서드를 사용해 생성한다.

     

    static Calendar getInstance()

    static Calendar getInstance(Locale aLocale)

    static Calendar getInstance(TimeZone zone)

    static Calendar getInstance(TimeZone zone, Locale aLocale)

     

    매개변수가 없는 static Calendar getInstance()는 기본 타임존과 로케일 정보를 바탕으로 날짜와 시간 정보를 갖는 Calendar 객체를 생성한다. 특정한 타임존과 로케일을 바탕으로 날짜와 시간 정보를 갖고자 할 땐 인자로 타임존과 로케일 정보를 지정한다.

     

    Calendar 객체가 생성된 후에는 Calendar 객체에 포함된 필드를 사용하여 날짜와 시간을 자세하게 다룰 수 있다. Calendar에 선언된 필드들은 모두 int 타입의 값을 가지며 final로 선언되어 값을 수정할 수 없다. 또한, static으로 선언되어 '클래스명.변수명' 형식으로 접근하여 사용할 수 있다. Calendar 필드와 값은 아래와 같다.

     

    필드 이름 의미
    YEAR 연도
    MONTH 월(0~11)
    HOUR 시간(0~11)
    HOUR_OF_DAY 24시간을 기준으로 한 시간
    SECOND
    DAY_OF_MONTH 한 달의 날짜
    DAY_OF_WEEK 한 주의 요일
    AM_PM 오전 또는 오후
    MINUTE
    MILLISECOND 밀리초

     

    public class Test{
    	public static void main(String[] args){
        	Date d = new Date();
            System.out.println(d);
            
            Calendar c = Calendar.getInstance();
            
            System.out.println(c.get(Calendar.YEAR));
            System.out.println(c.get(Calendar.MONTH) + 1);
            System.out.println(c.get(Calendar.DAY_OF_MONTH));
            System.out.println(c.get(Calendar.HOUR));
            System.out.println(c.get(Calendar.MINUTE));
        }
    }
    
    [실행결과]
    Sun Jan 19 22:47:00 KST 2020
    2020
    1
    19
    10
    47

     

    날짜와 시간 정보 설정

     

    생성된 Calendar의 날짜와 시간 정보를 설정할 땐 setter 아래의 메서드를 사용한다.

     

    void set(int field, int value);

    void set(int year, int month, int date);

    void set(int year, int month, int date, int hourOfDay, int minute);

    void set(int year, int month, int date, int hourOfDay, int minute, int second);

     

    ...
    	// 현재 시스템의 날짜와 시간 정보를 가지고 있다.
    	Calendar c2 = Calendar.getInstanceI();
        
        // clear() 메서드는 기존의 정보를 지운다.
        c2.clear();
        c2.set(2030, 3, 19);
        int year = c2.get(Calendar.YEAR);
        int month = c2.get(Calendar.MONTH);
        int day = c2.get(Calendar.DAY_OF_MONTH);
        System.out.println(year+"/"+month+"/"+day);
    ...
    
    [실행결과]
    2022/3/19

     

Designed by Tistory.