[Java] 자바 #11 Date, Calendar 클래스

Date, Calendar 클래스


서론

- 시간과 시각은 다르다


- 시간 : 8시간 30분

- 시각 : 2019-02-05 20:20:30

자바의 시각(시간) 데이터는 2가지가 있다.

1. Date 클래스

2. Calendar 클래스(****) - 더 중요.



예제

첫번째 예제(Date)

- 시스템 시각 얻어오기


int n1 = 10;

Date d1 = new Date();


System.out.println(n1);

System.out.println(d1); //현재시각 출력됨. - Date 객체를 생성하는 따 그 시각을 변수에 담는 것임. 


두번째 예제(Calendar)


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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
public static void m2() throws Exception{
        //두번째 예제
        
        //시스템 시각 얻어오기
        Calendar c2 = Calendar.getInstance(); //생성하는 시각데이터가 담김.
        System.out.println(c2); //현재시간 출력
        
        //c2 : 많은 값들이 모인 집합으로써 
        //집합에서 일부 원하는 값만 추출 가능.
        //-int get(int field)
        System.out.println(c2.get(1));
        System.out.println(c2.get(2));
        System.out.println(c2.get(3));
        System.out.println(c2.get(4));
        System.out.println(c2.get(5));
        int yearFlag =1 ;
        System.out.println(c2.get(yearFlag));
        //캘린더 상수
        System.out.println("");
        System.out.println(c2.get(Calendar.YEAR));            //(년) 2018
        //(월)6이나오는데 0~11을 리턴하므로 6이면 7월임. 즉 정확한 월을 출력하기 위해서는 +1해주어야함.
System.out.println(c2.get(Calendar.MONTH)+1);
        System.out.println(c2.get(Calendar.DATE));            //(일)10
        System.out.println(c2.get(Calendar.HOUR));            //(시)9(12H)
        System.out.println(c2.get(Calendar.HOUR_OF_DAY));    //(시)9(24H)
        System.out.println(c2.get(Calendar.MINUTE));        //(분)
        System.out.println(c2.get(Calendar.SECOND));        //(초)
        System.out.println(c2.get(Calendar.MILLISECOND));    //(밀리초)1000분의 1초
        System.out.println(c2.get(Calendar.DAY_OF_WEEK));    //(요일) 일요일부터 1, 월 2, 화 3, 수 4, 목 5, 금 6, 토 7 
        System.out.println(c2.get(Calendar.AM_PM));            //(오전,오후) AM(오전) - 0 , PM(오후) - 1
 
 
        //오늘은 2018년 7월 10일 입니다. 현재 시각은 9시 17분 30초 입니다.
        Calendar now;
        now = Calendar.getInstance();
        System.out.printf("오늘은 %d년 %d월 %d일 입니다.\n현재 시각은 %s %d시 %d분 %d초 입니다.\n"
            ,now.get(Calendar.YEAR)
            ,now.get(Calendar.MONTH)+1
            ,now.get(Calendar.DATE)
            ,now.get(Calendar.AM_PM) == 0"오전" : "오후"
            ,now.get(Calendar.HOUR)
            ,now.get(Calendar.MINUTE)
            ,now.get(Calendar.SECOND)
        );
}
 
 
    }
cs


세번째 예제

- 생성된 Calendar 객체의 정보를 특정 시각으로 설정하는 방법.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static void m3(){
        //Calendar 생성
        //1. 현재시각 얻어오기
        //2. 특정시각 얻어오기 (1번을 먼저 하고 -> 수정 -> 내가 원하는 시각으로 만들기)
        
        // - void set(int, int) 
        //내 생일(1994.08.21) 
        Calendar birthday;
        birthday = Calendar.getInstance();
        birthday.set(Calendar.YEAR,1994);
        birthday.set(Calendar.MONTH,7);
        birthday.set(Calendar.DATE,21);
        System.out.printf("제 생일은 %d년 %d월 %d일 입니다.\n\n\n"
            ,birthday.get(Calendar.YEAR)
            ,birthday.get(Calendar.MONTH)+1
            ,birthday.get(Calendar.DATE)
        );
}
cs


네번째 예제

- 출력양식이 다양하다. printf문을 사용해서 다양한 날짜출력양식이 있다.


1
2
3
4
5
6
7
8
9
10
11
12
13
public static void m4(){
        //확인하기 쉬운 방법
        // 날짜 & 시간 데이터를 출력하기 위한 형식문자 제공 (printf)
        Calendar now = Calendar.getInstance();
 
        //출력
        System.out.printf("%tF\n",now); // 2018-07-10        -> 오늘 날짜
        System.out.printf("%tT\n",now); // 09:37:24            -> 현재 시각
        System.out.printf("%tA\n",now); // 화요일            -> now안에 들어있는 요일
        System.out.printf("%tR\n",now); // 09:32            -> 초를 버린 시간과 분
        System.out.printf("%tr\n",now); // 09:32:01 오전    -> 오전, 시 분 초 나옴.
        // 모든 것은 객체속에 들어있는 정보.        
}
cs



다섯번째 예제

- 시각에 시간을 더하거나 뺄 경우. 즉, 시각과 시간의 연산하는 방법.

- void add(int field, int value) 메소드를 이용.


//현재시각을 생성한다.

Calendar now = Calendar.getInstance();


//100일 후는??

now.add(Calendar.DATE,100); //캘린더 상수를 써서 현재 저장된 캘린더 상수에 100을 더하는 방법이다.


//다시 현재시각으로 바꾸는 방법.

now = Calendar.getInstance(); // 그냥 다시 객체생성 해주면 된다.


- 이런식으로 시간과 분 등 모든 Calendar 객체의 정보를 변경할 수 있다.

now.add(Calendar.HOUR,2);

now.add(Calendar.MINUTE,45);

System.out.printf("%tT\n",now); // 바뀐 시각을 출력.


- 100일 전??

now.add(Calendar.DATE, -100); //그냥 -100을 더하면 된다.



여섯번째 예제

- 시각과 시각의 연산.

- 시각은 Tick 이라는 단위로 주로 연산을 한다.

- Tick이란 1970-01-01 00:00:00을 기준으로 계속 누적된 밀리초값이다.

- Tick 값은 통상 같은 값이 나올 수 없다.(웬만하면!!)


//특정시각의 틱

Calendar now = Calendar.getInstance();


//Calendar -> (형변환) -> Date

Date nowDate = now.getTime();

long nowTick = nowDate.getTime(); //

System.out.printf("%d\n",nowTick);


//현재시각의 틱.

System.out.println(System.currentTimeMillis());








댓글

Designed by JB FACTORY