What we have to do is to be forever curiously
testing new opinions and courting new impressions

우리가 해야 할 일은 끊임없이 호기심을 갖고
새로운 생각을 시험해보고 새로운 인상을 받는 것

자바 Calendar 클래스

  • 정의
  • 사용


정의

Calendar 클래스는 Date 클래스와 마찬가지로 날짜와 시간을 다루는 클래스

Calendar 클래스가 새로 추가되면서 Date 대부분의 메소드는 deprecated

경우에 따라, Date 메소드를 그대로 사용하거나 Calendar 클래스와 혼용

추상 클래스이기 때문에 직접 new 하여 객체 생성 불가

Calendar.getInstance() 메소드를 이용하거나 Calendar 클래스를 상속받는 GregorianCalendar 클래스를 이용하여 객체 생성


사용

주요 상수

상수 사용방법 설명
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 현재 초
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);

    }

constan

주요 메소드

메소드 설명
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) 현재 객체의 주어진 값의 필드에 해당하는 상수 값을 반환
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) 현재 객체의 특정 필드의 최대 값을 반환
public static void main(String[] args) {

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

        Calendar date1 = Calendar.getInstance();
        Calendar date2 = Calendar.getInstance();

        date1.set(1945, Calendar.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) +"일 ";
    }

method


태그:

카테고리:

업데이트:

댓글남기기