문홍의 공부장

Calendar 클래스의 개념과 예제 (Calendar class in java) 본문

개발/Java

Calendar 클래스의 개념과 예제 (Calendar class in java)

moonong 2020. 1. 16. 20:40
반응형

Calendar 클래스

Calendar 클래스는 Date 클래스와 마찬가지로 날짜와 시간을 다루는 클래스이다. Calendar 클래스가 새로 추가되면서 Date 대부분의 메소드는 deprecated 되어 잘 사용하지 않으나, 경우에 따라 Date 의 메소드를 그대로 사용하거나, 혹은 Calendar 클래스와 상호 변환하는 상황이 있다.

추상 클래스이기 때문에 직접 new 하여 객체 생성이 불가하고, Calendar.getInstance() 메소드를 이용하거나 Calendar 클래스를 상속받는 GregorianCalendar 클래스를 이용하여 객체를 생성할 수 있다.

Calendar 클래스의 주요 상수

상수 사용방법 설명
static int YEAR Calendar.YEAR 현재 년도
static int MONTH Calendar.MONTH 현재 월 (1월: 0)
static int DATE Calendar.DATE 현재 월의 날짜
static int WEEK_OF_YEAR Calendar.WEEK_OF_YEAR 현재 년도의 몇째 주
static int WEEK_OF_MONTH Calendar.WEEK_OF_MONTH 현재 월의 몇째 주
static int DAY_OF_YEAR Calendar.DAY_OF_YEAR 현재 년도의 날짜
static int DAY_OF_MONTH Calendar.DAY_OF_MONTH 현재 월의 날짜
static int DAY_OF_WEEK Calendar.DAY_OF_WEEK 현재 요일(일요일:1 ,토요일: 7)
static int HOUR Calendar.HOUR 현재 시간 (12시간제)
static int HOUR_OF_DAY Calendar.HOUR_OF_DAY 현재 시간 (24시간제)
static int MINUTE Calendar.MINUTE 현재 분
static int SECOND Calendar.SECOND 현재 초
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public static void main(String[] args) {
        Calendar today = Calendar.getInstance();
        int year = today.get(Calendar.YEAR);
        int month = today.get(Calendar.MONTH);
        int date = today.get(Calendar.DATE);
        
        int woy = today.get(Calendar.WEEK_OF_YEAR);
        int wom = today.get(Calendar.WEEK_OF_MONTH);
        
        int doy = today.get(Calendar.DAY_OF_YEAR);
        int dom = today.get(Calendar.DAY_OF_MONTH);
        int dow = today.get(Calendar.DAY_OF_WEEK);
        
        int hour12 = today.get(Calendar.HOUR);
        int hour24 = today.get(Calendar.HOUR_OF_DAY);
        int minute = today.get(Calendar.MINUTE);
        int second = today.get(Calendar.SECOND);
        
        int milliSecond = today.get(Calendar.MILLISECOND);
        int timeZone = today.get(Calendar.ZONE_OFFSET);
        int lastDate = today.getActualMaximum(Calendar.DATE);
        
        System.out.println("오늘은 " + year +"년 " + month+1 + "월" + date +"일");
        System.out.println("오늘은 올해의 " + woy +"째주, 이번달의 " + wom + "째주. " + date +"일");
        System.out.println("오늘은 이번 해의 " + doy +"일이자, 이번 달의 " + dom + "일. 요일은 " + dow +"일 (1:일요일)");
        System.out.println("현재 시각은 " + hour12 +":"+ minute + ":"+ second +", 24시간으로 표현하면 " + hour24+":"+ minute + ":"+ second);
        System.out.println("오늘은 " + year +"년 " + month+1 + "월" + date +"일");
        System.out.println("1000분의 1초 (0~999): " + milliSecond);
        System.out.println("timeZone (-12~+12): " + timeZone/(60*60*1000)); // 1000분의 1초를 시간으로 표시하기 위해 60*60*1000
        System.out.println("이 달의 마지막 날: " + lastDate);
        
        
    }
cs

Calendar 클래스의 주요 메소드

메소드 설명
static Calendar getInstance() 현재 날짜와 시간 정보를 가진 Calendar 객체를 생성한다. 
boolean after(Object when)  when과 비교하여 현재 날짜 이후이면 true, 아니면 false를 반환한다. 
boolean before(Object when) when과 비교하여 현재 날짜 이전이면 true, 아니면 false를 반환한다.
boolean equals(Object obj)  같은 날짜값인지 비교하여 true, false를 반환한다. 
int get(int field) 현재 객체의 주어진 값의 필드에 해당하는 상수 값을 반환한다.이 상수값은 Calendar 클래스의 상수중에 가진다. 
Date getTime() 현재의 객체를 Date 객체로 변환한다. 
long getTimeInMills()  객체의 시간을 1/1000초 단위로 변경하여 반환한다. 
void set(int field, int value)  현재 객체의 특정 필드를 다른 값으로 설정한다. 
void set(int year, int month, int date)  현재 객체의 년, 월, 일 값을 다른 값으로 설정한다. 
void set(int year, int month, int date, int hour, int minute, int second)  현재 객체의 년, 월, 일, 시, 분, 초 값을 다른 값으로 설정한다. 
void setTime(Date date)  date 객체의 날짜와 시간 정보를 현재 객체로 생성한다. 
void setTimeInMills(long mills)  현재 객체를 1/1000초 단위의 주어진 매개변수 시간으로 설정한다. 
int getActualMinimum(int field) 현재 객체의 특정 필드의 최소 값을 반환한다.
int getActualMaximum(int field) 현재 객체의 특정 필드의 최대 값을 반환한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static void main(String[] args) {
        final String[] DAY_OF_WEEK = {"""일""월""화""수""목""금""토"};
        
        Calendar date1 = Calendar.getInstance();
        Calendar date2 = Calendar.getInstance();
        
        date1.set(1945Calendar.AUGUST, 15);
        
        System.out.println("date1은 " + toString(date1) + DAY_OF_WEEK[date1.get(Calendar.DAY_OF_WEEK)] +"요일이고, \n"
                + "date2(오늘)는 " + toString(date1) + DAY_OF_WEEK[date1.get(Calendar.DAY_OF_WEEK)] +"요일. " );
        
        long difference = (date2.getTimeInMillis() - date1.getTimeInMillis())/ 1000
        System.out.println("date1부터 지금까지 " + difference + "초가 지났고, \n"
                + "일(day)로 계산하면 " + difference/(24*60*60+"일이 지났다. ");
    }
 
    private static String toString(Calendar date) {
        return date.get(Calendar.YEAR)+ "년 " + (date.get(Calendar.MONTH)+1+"월 " + date.get(Calendar.DATE) +"일 ";
    }
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs

반응형