[Java] 자바 #11 Date, Calendar 클래스
- 프로그래밍 언어/Java
- 2019. 2. 5. 19:57
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());
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] 자바 #13 반복문(1) - for문(break,continue) (0) | 2019.02.10 |
---|---|
[Java] 자바 #12 자바 조건문(if문, switch문) (0) | 2019.02.06 |
[Java] 자바 #10 재귀메소드(feat. factorial,최대공약수,최대공배수) (0) | 2019.02.04 |
[Java] 자바 #9 메소드, 메서드(Method) (0) | 2019.02.03 |
[Java] 자바 #8 BufferedReader (0) | 2019.02.03 |