0%

CalendarClass

Calendar클래스

  • set()으로 날짜와 시간 지정하기
1
void set(int field, int value)
2
void set(int year, int month, int date)
3
void set(int year, int month, int date, int hourOfDay, int minute)
4
void set(int year, int month, int date, int hourOfDay, int minute, int second)
  • 날짜 지정하는 방법, 월(MONTH)이 0부터 시작한다는 점에 주의
1
Calendar datel = Calendar.getInstance();
2
date1.set(2017, 7, 15); // 2017년 8월 15일(7월 아님)
3
// date1.set(Calendar.YEAR, 2017);
4
// date1.set(Calendar.MONTH, 7);
5
// date1.set(Calendar.DATE, 15);
  • 시간 지정하는 방법
1
Calendar time1 = Calendar.getInstance();
2
time1.set(Calendar.HOUR_OF_DAY, 10); //time1을 10시 20분 30초로 설정
3
time1.set(Calendar.MIVUTE, 20);
4
time1.set(Calendar.SECOND, 30);
  • 보통 두 날짜의 일자 차이를 구할 땐 초로 바꾼 후 계산하고 다시 일로 변경합니다.
1
import java.util.*;
2
3
class Ex10_3 {
4
    public static void main(String[] args) {
5
        final int[] TIME_UNIT = {3600, 60, 1};
6
        final String[] TIME_UNIT_NAME = {"시간", "분", 초}; //큰 단위를 앞에 둠
7
        
8
        calendar time1 = caleandar.getInstance();
9
		calendar time1 = caleandar.getInstance();
10
        
11
        time1.set(Calendar.HOUR_OF_DAY, 10);
12
        time1.set(Calendar.MINUTE, 20);
13
        time1.set(Calendar.SECOND, 30);
14
        
15
       	time2.set(Calendar.HOUR_OF_DAY, 20);
16
        time2.set(Calendar.MINUTE, 30);
17
        time2.set(Calendar.SECOND, 10);
18
        
19
        System.out.println("time1: " + time1.get(Calendar.HOUR_OF_DAY) + "시" + time1.get(Calendar.MINUTE) + 		"분" + time1.get(Calendar.SECOND) + "초");
20
        System.out.println("time2: " + time2.get(Calendar.HOUR_OF_DAY) + "시" + time2.get(Calendar.MINUTE) + 		"분" + time2.get(Calendar.SECOND) + "초");
21
        long difference = Math.as(time2.getTimeInMillis() - time1.getTimeInMillis())/1000;
22
        System.out.println("time1과 time2의 차이는" + difference + "초입니다.");
23
        Stirng tmp = "";
24
    for (int i=0; i< TIME_UNIT.length; i++) {
25
        tml += difference/TIME_UNIT[i] + TIME_UNIT_NAME[i];
26
    difference %= TIME_UNIT[i];
27
    }
28
    System.out.println("시분초로 변환하면" + tmp + "입니다."
29
}
  • clear()은 Calendar객체의 모든 필드를 초기화
  • add()는 특정필드의 값을 증가 또는 감소(다른 필드에 영향O)
1
calendar date = Calendar.getInstance();
2
date.clear(); //모든 필드를 초기화
3
date.set(2020, 7, 31); //2020년 8월 31일로 설정
4
5
date.add(Calendar.DATE, 1); //날짜(DATE)에 1을 더함
6
date.add(Calender.MONTH, -8); //월(MONTH)에서 8을 뻄
  • roll()은 특정필드의 값을 증가 또는 감소(다른 필드에 영향X)
1
date.set(2020, 7, 31); //2020년 8월 31일로 설정
2
3
//add()와 달리 roll()은 다른 필드에 영향을 미치지 않는다.
4
//년, 월, 일이 별도임
5
date.roll(Calendar.DATE, 1); //날짜(DATE)에 1을 더함
6
date.roll(Calendar.MONTH, -8); //월(MONTH)에서 8을 뻄

Date와 Calendar간의 변환

  • Date의 메서드는 대부분 deprecated(사용하지 않는것을 권장)되었지만 여전히 사용/자바는 새로운 기능이 나와도 하위호환성을 따지며 버전이 나옴
1
1. Calendar를 Date로 변환
2
    Calendar cal = Calendar.getInstance();
3
		...
4
    Date d = new Date(cal.getTimeInMillis()); //Date(long date)
5
6
2.Date를 Calendar로 변환
7
    Date d = new Date();
8
		...
9
    Calendar cal = Calendar.getInstance();
10
	cla.setTime(d)