본문 바로가기
Language/Java

시간 관련 클래스 및 패키지

by 태윤2 2020. 6. 25.

java.util.Date 클래스

- 날짜 및 시각 정보를 관리하는 클래스

- 대부분의 메서드가 deprecated 로 처리되어 있으므로 현재 사용되지 않지만,

   기존에 제공되는 API 들의 대다수가 Date 타입을 사용하고 있음

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Date d1 = new Date(); // 인스턴스 생성 해서 사용
 
        System.out.println(d1); // toString() 생략되어 있음 (=오버라이딩)
        // 현재 날짜 및 시각 정보가 Wed Jun 24 16:03:53 KST 2020 형태로 출력됨
        // => EEE MMM dd HH:mm:ss zzz yyyy 패턴을 사용하여  toString() 메서드 오버라이딩됨
 
Date d2 = new Date(1500000000000L);
 
 
        long gap = d1.getTime() - d2.getTime();
        System.out.println("두 객체의 차 : " + gap); 
두 객체의 차 : 93013182978 // 밀리초 단위로 나옴
// 밀리초 단위를 일 단위로 변경
// 밀리초 - > 초/1000 -> 분/60 -> 시/60 -> 일/24
 
        System.out.println("두 객체의 차 : " + (gap/1000/60/60/24));
두 객체의 차 : 1076일
 
// 현재 deprecated 처리된 생성자
        Date d3 = new Date(20025,12000); // 2002년 5월 1일 20시 0분 0초로 설정
        System.out.println(d3.getYear() + "/" + d3.getMonth() + "/"+ d3.getDate());
 
cs

 

java.util.Calendar 클래스

날짜 및 시각 정보를 관리하는 클래스

객체 생성이 불가능한 추상클래스

=>Calendar.getInstace() 메서드로 호출하여 기존의 인스턴스를 리턴받아 사용 =싱글톤디자인패턴

get() 메서드로 시각 및 날짜 정보를 가져오고, set() 메서드로 설정

=> 주의! 파라미터에 날짜 및 시각 항목을 int형으로 지정해야하는데

     이 때, Calendar.XXX 형태의 상수를 사용하여 정보의 종류를 지정

get() 또는 set() 메서드 사용 시 월(MONTH)에 대한 정보에 접근할때

 0 ~ 11월 까지로 사용되므로 주의! ( 가져올 때 +1, 설정할 때 -1 값 사용)

 

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
Calendar cal = Calendar.getInstance(); // Singletone Design Pattern
 
int year = cal.get(Calendar.YEAR);
int mon = cal.get(calendar.MONTH)+1// 월 정보 가져와서 +1 필수!
int day = cal.get(calendar.DAY_OF_MONTH) // DAY_OF_WEEK = 요일
 
// DAY_OF_WEEK 에 요일에 따라 숫자값이 저장되어 있음
 
String strDayOfWeek = "";
        
        switch (dayOfWeek) {
        case Calendar.MONDAY :
            strDayOfWeek = "월요일";
            break;
        case Calendar.TUESDAY :
            strDayOfWeek = "화요일";
            break;
        case Calendar.WEDNESDAY :
            strDayOfWeek = "수요일";
            break;
        case Calendar.THURSDAY:
            strDayOfWeek = "목요일";
            break;
        case Calendar.SUNDAY :
            strDayOfWeek = "일요일";
            break;
        case Calendar.FRIDAY :
            strDayOfWeek = "금요일";
            break;
        case Calendar.SATURDAY :
            strDayOfWeek = "토요일";
            break;
        }
 
 
//        int hour = cal.get(Calendar.HOUR); // 12시간 제
        int hour = cal.get(Calendar.HOUR_OF_DAY); // 24시간 제
        int min = cal.get(Calendar.MINUTE);
        int sec = cal.get(Calendar.SECOND);
 
// 오전 오후 정보
int ampm = cal.get(Calendar.AM_PM);
String strAmpm = (ampm ==Calendar.AM) ? "오전" : "오후";
System.out.println(strAmpm + " " +hour + "시 " + min + "분 " + sec + "초");
cs

 

java.time 패키지

날짜 및 시각 관련 정보를 제공하는 클래스들의 모음

LocalDate 클래스 : 날짜를 처리하는 클래스

LocalTime 클래스 : 시각을 처리하는 클래스

LocalDateTime 클래스 : 날짜 및 시각을 처리하는 클래스

=> 대부분의 메서드가 동일함

객체에 현재 정보를 가져오는 메서드 : now() 

객체에 특정 정보를 설정하는 메서드 : of()

연산을 위해 제공하는 메서드 : plusXXXs(), minusXXXs(), withXXX() 메서드 사용 

=> XXX항목의 이름(ex. Hour, Month 등)

 

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
LocalDate date =LocalDate.now();
System.out.println("오늘 날짜 : " + date); // toString() 오버라이딩
 
LocalDate date2 = LocalDate.of(2000,1,1);
System.out.println("설정된 날짜 : " + date2);
 
LocalTime time = LocalTime.now();
System.out.println("현재 시각 : " + time);
 
LocalTime time2 = LocalTime.of(1215);
System.out.println("설정된 시각 : " + time2);
 
LocalDateTime now = LocalDateTime.now();
System.out.println("지금 : " + now);
 
// 객체 내의 각 정보 가져오기 = getXXX()
 
int year = date.getYear();
int month = date.getMonthValue();
int day = date.getDayOfMonth();
 
DayOfWeek dayOfWeek = date.getDayOfWeek(); // DayOfWeek enum 으로 지정
 
System.out.println(year + "년 " + month + "월 " + day + "일");
 
int hour = time.getHour();
int min = time.getMinute();
int sec = time.getSecond();
 
System.out.println(hour + "시 " + min + "분 " + sec + "초");
 
 
System.out.println("올해는 윤년입니까? " + date.isLeapYear());
System.out.println("이번달은 몇 일까지 있음? " + date.lengthOfMonth());
System.out.println("올해는 몇 일 까지 있음? " + date.lengthOfYear());
 
cs

 

 

 

 

'Language > Java' 카테고리의 다른 글

정규표현식  (0) 2020.07.06
StringTokenizer~format  (0) 2020.07.06
제네릭(Generic)  (0) 2020.06.25
Stack(스택) vs Queue(큐)  (0) 2020.06.25
Map 인터페이스 - Collection 프레임워크  (0) 2020.06.25