1 minute read

Calendar.set(field,value): 원하는 시간으로 반환할 수 있도록!

[Reference] Calendar.set(field, value)

기존에 Calendar의 static 상수는 MONTH 등과 같이 반환하는 값이 일정값/범위로 지정되어 있는 경우가 있다!

하지만, set을 사용하면, 원하는 static 상수의 값을 value 변수의 값으로 지정하여 변경이 가능하다!

Calendar cal = Calendar.getInstance();
		
		System.out.println("Before set MONTH value: "+cal.get(Calendar.MONTH));
		
		cal.set(Calendar.MONTH, 3);
		System.out.println("After set MONTH value: "+cal.get(Calendar.MONTH));

enter image description here

Calendar set 메서드의 다양한 오버로딩 메서드 형태

 public void set(int field, int value)
    {
       
    }

    public final void set(int year, int month, int date)
    {
        set(YEAR, year);
        set(MONTH, month);
        set(DATE, date);
    }


    public final void set(int year, int month, int date, int hourOfDay, int minute)
    {
        set(YEAR, year);
        set(MONTH, month);
        set(DATE, date);
        set(HOUR_OF_DAY, hourOfDay);
        set(MINUTE, minute);
    }

이 중에서

public final void set(int year, int month, int date)
    {
        set(YEAR, year);
        set(MONTH, month);
        set(DATE, date);
    }

를 이용한 경우를 예제로 연습해보도록 하자

package com.part01_dateNcal.part01_Calendar;

import java.util.Calendar;

public class SetDayOfWeek {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		final String[] DAY_OF_WEEK=
				{"","일","월","화","수","목","금","토"};
		//기존의 값은 1부터 시작하기 때문에 맞춰주었음
		
		Calendar date1 = Calendar.getInstance();
		Calendar date2 = Calendar.getInstance();
	
		date1.set(2000,01,01);
		System.out.println("date1은 "+toString(date1)+" "+
				DAY_OF_WEEK[date1.get(Calendar.DAY_OF_WEEK)]+"요일입니다");
		System.out.println("오늘은 "+toString(date2)+" "+
				DAY_OF_WEEK[date2.get(Calendar.DAY_OF_WEEK)]+"요일입니다");
		
		//두 날짜 간 차이
		long diff=
				(date2.getTimeInMillis()-date1.getTimeInMillis())/(1000 * 24 * 60 * 60);//일
		System.out.println(toString(date1)+"일 부터 "+toString(date2)+"일 까지 "+
				diff+"일이 지났습니다");
		
	}


	public static String toString(Calendar date1)
	{
		return date1.get(Calendar.YEAR)+" 년 "+date1.get(Calendar.MONTH)+" 월 "+
				date1.get(Calendar.DAY_OF_MONTH)+"일 ";
	}
}


이렇게 될 경우, 연&&월 && 일을 매개변수로 받아 날짜를 다시 설정해주었고, toString메서드를 재정의하지 않고 다시 만들어 정의해주었기 때문에 새로운 날짜를 기준으로 다양한 활용을 해볼 수 있다!

enter image description here

Updated: