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) |