Java - Date,time,Calendar

2020. 6. 30. 23:34Java

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
package time_and_date;
 
import java.util.Date;
 
public class Ex {
 
    public static void main(String[] args) {
        
        /*
         * java.util.Date 클래스
         * 날짜 및 시각 정보를 관리하는 클래스
         * 대부분의 메서드가 deprecated 로 처리되어 있으므로 현재 사용되지 않지만
         * 기존에 제공되는 API들의 대다수가 Date 타입을 사용하고 있음.
         */
        
        Date d1=new Date();
        System.out.println(d1);//toString() 생략되어 있음(오버라이딩)
        //현재 날짜 및 시각 정보가 Wed Jun 24 16:02:30 KST 2020 형태로 출력됨
        //-> EEE MM dd HH:mm:ss zzz yyyy 패턴을 사용하여 toString() 메서드 오버라이딩 됨
        
        Date d2=new Date(15000000000000L);
        //생성자에 long 타입 값을 전달하면 1970년 1월 1일 0시 0분 0초를 기점으로
        //long 타입 값을 밀리초(1/1000초)로 환산한 현재 시각을 객체로 생성
        System.out.println(d2);
        
        
        long gap=d1.getTime()-d2.getTime();//두 날짜의 차를 밀리초(ms) 단위로 계산
//        System.out.println("두 객체의 차 : "+gap);
        //밀리초 단위를 일 단위로 변경
        //밀리초 -> 초(/1000) -> 분(/60) -> 시(/60) -> 일(/24)
        System.out.println("두 객체의 차 : "+(gap/1000/60/60/24)+"일");
        
        //-----------------------------
        //현재 deprecated 처리된 생성자
        Date d3=new Date(2002512000);//2020년 5월 1 일 20시 0분 0초로 설정
        System.out.println(d3.getYear()+"/"+d3.getMonth()+"/"+d3.getDate());
        
        d3.setYear(2019);
        System.out.println(d3.getYear());
        
        
        
        
        
    }
 
}
 
package time_and_date;
 
import java.util.Calendar;
 
public class Ex2 {
 
    public static void main(String[] args) {
        
        /*
         * java.util.Calendar 클래스
         * 날짜 및 시각 정보를 관리하는 클래스
         * 객체 생성이 불가능한 추상클래스
         * Calendar.getInstance() 메서드를 호출하여 기존의 인스턴스 리턴받아 사용
         * get() 메서드로 시각 및 날짜 정보를 가져오고, set() 메서드로 설정
         * 주의!! 파라미터에 날짜 및 시각 항목을 int 형으로 지정해야하는데
         * 이때 Calendar.XX 형태의 상수를 사용하여 정보의 종류를 지정
         * get() 또는 set() 메서드 사용 시 월(MONTH) 에 대한 정보에 접근할때
         * 0~11 월까지로 사용되므로 주의!!! (가져올때 +1,설정할때-1 값 사용)
         */
        
        
        //기존에 생성되어 있는 인스턴스 가져오기
        Calendar cal=Calendar.getInstance();
        
        int year = cal.get(Calendar.YEAR);
        int month= cal.get(Calendar.MONTH)+1;//월 정보 가져와서 +1 필수!@#!@#$
        int day= cal.get(Calendar.DAY_OF_MONTH);
        
        int dayOfWeek=cal.get(Calendar.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.FRIDAY:
            strDayOfWeek="금요일";
            break;
        case Calendar.SATURDAY:
            strDayOfWeek="토요일";
            break;
        case Calendar.SUNDAY:
            strDayOfWeek="일요일";
            break;
        }
        
        
        System.out.println(year+"/"+month+"/"+day+"/"+strDayOfWeek);
        
        
        
//        int hour=cal.get(Calendar.HOUR);//24시간제
        int hour=cal.get(Calendar.HOUR_OF_DAY);//24시간제
        int min=cal.get(Calendar.MINUTE);
        int sc=cal.get(Calendar.SECOND);
        
        //오전/오후 정보
        int ampm=cal.get(Calendar.AM_PM);
        String strAmpm=(ampm==Calendar.AM) ? "오전" : "오후" ;
        
        System.out.println(strAmpm+" "+hour+":"+min+":"+sc);
 
        
    }
 
}
 
 
package time_and_date;
 
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
 
public class Ex3 {
 
    public static void main(String[] args) {
        
        /*
         * java.time 패키지
         * 날짜 및 시각 관련 정보를 제공하는 클래스들의 모음
         * LocalDate 클래스 : 날짜를 처리하는 클래스
         * LocalTime 클래스 : 시간을 처리하는 클래스
         * LocalDateTime : 날짜 및 시간을 처리하는 클래스
         * -> 대부분 메서드가 동일함
         * 객체에 현재 정보를 가져오는 메서드 : now()
         * 객체에 특정 정보를 설정하는 메서드 : of()
         * 연산을 위해 제공하는 메서드 : plusXXXs(),minusXXXs(),withXXX()
         * -> XXX 항목 이름(ex, 시 : Hour, 월 : Month 등)
         * 
         */
        
        
        LocalDate date=LocalDate.now();//현재 날짜 정보 가져오기
        System.out.println("오늘 날짜 :"+date);
        
        LocalDate date2=LocalDate.of(200011);
        System.out.println("설정된 날짜 : "+date2);
        
        LocalTime time=LocalTime.now();// 현재 시간 정보 가져오기
        System.out.println("현재 시각 : "+time);
        
        LocalTime time2=LocalTime.of(121,5);
        System.out.println("설정된 시간 : "+time2);
        
        LocalDateTime now= LocalDateTime.now();
        System.out.println("지금은 "+now);
        
        System.out.println("-------------------------");
        
        int year=date.getYear();
        int month=date.getMonthValue();//getMonth() 메서드는 리턴타입이 Month
        int day=date.getDayOfMonth();
        DayOfWeek dayOfWeek=date.getDayOfWeek();
        
        System.out.println(year+"년"+month+"월"+day+"일"+dayOfWeek);
        
        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

 

Date, time 패키지, Calendar에 대해서 배워보았는데 잘 쓰이지는 않는다고 했다. 하지만 알아둬서 나쁠 것은 없으니

이런 것이 있다는 정도에서 기억해두어야겠다. 그래야 다음에 어떤 상황이 닥칠지 모르니 헤매지 않고

잘 사용을 할수 있을 것이다!

'Java' 카테고리의 다른 글

Java - SimpleDateFormat,MessageFormat  (0) 2020.07.02
Java- enum  (0) 2020.07.01
Java - Generic  (0) 2020.06.30
Java - Stack & Queue  (0) 2020.06.30
Java - Collection 프레임워크의 Map  (0) 2020.06.30