hyeonga_code

Java_62_Calendar 클래스, 날짜 클래스 본문

Java

Java_62_Calendar 클래스, 날짜 클래스

hyeonga 2023. 10. 25. 06:59
반응형


-- Calendar
          - Date 보다 자주 사용합니다.
    - 1.3 버전에서 출시
    - 연산을 위해 출시
    - calendar의 생성자
        - calendar.getInstance()
    Calendar now = Calendar.getInstance()
    value = now.get(상수값)

 - 날짜
 'DateTimeEx.java'
=====

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
package adv.baseclass;
 
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.util.Calendar;
import java.util.Date;
 
// Date, Time
public class DateTimeEx {
 
    public static void main(String[] args) {
        
        Date date = new Date();    // 현재 날짜를 알고싶은 경우
        
        System.out.println("date : " + date);
            /*    date : Fri Jun 16 16:07:35 KST 2023 */
        
        // 날짜 형식 지정
        SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        System.out.println("ft : " + ft.format(date));
            /* ft : 2023-06-16 04:10:20    */
        
        // 날짜 연산
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);    // 계산할 날짜의 기준을 지정합니다.
        calendar.add(Calendar.DATE, -2);    // 날짜를 기준으로 2일 전을 알고싶습니다.
        System.out.println("Calendar -2 : " + ft.format(calendar.getTime()));
            /*    Calendar -2 : 2023-06-14 04:15:11    */
        
        
        // LocalDateTime    : Java 8부터 사용 가능합니다.    (T : 시간과 날짜를 구분) 
        LocalDateTime today = LocalDateTime.now();    // UTF 기준 현재 시간을 지정합니다.
        System.out.println(today);
            /*    2023-06-16T16:16:39.667836300    */
        
        // local 날짜 형식 지정
        DateTimeFormatter dtft = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
        System.out.println("DateTimeFormatter : " + dtft.format(today));
            /*    DateTimeFormatter : 2023-06-16 04:21:12    */
        
        // local 날짜 연산
        LocalDateTime someday = today.plusDays(-2);
        System.out.println("today.plusDays(-2) : " + dtft.format(someday));
            /*    today.plusDays(-2) : 2023-06-14 04:21:45    */
    }
}
cs




=====

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
import java.util.*;
 
public class ex0325 {
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        Date date = new Date(199911);    //Date에 줄 생김
        // The constructor Date(int, int, int) is deprecated.
 
        System.out.println("cal : " + cal);
        /*
         * cal :
         * java.util.GregorianCalendar[time=1680327865722,
         * areFieldsSet=true,
         * areAllFieldsSet=true,
         * lenient=true,
         * zone=sun.util.calendar.ZoneInfo[
         *         id="Asia/Seoul",
         *         offset=32400000,
         *         dstSavings=0,
         *         useDaylight=false,
         *         transitions=30,
         *         lastRule=null],
         *         firstDayOfWeek=1,
         *         minimalDaysInFirstWeek=1,
         *         ERA=1,
         *         YEAR=2023,
         *         MONTH=3,    // 달은 원래 달 보다 1 적은 달로 나온다.
         *         WEEK_OF_YEAR=13,
         *         WEEK_OF_MONTH=1,
         *         DAY_OF_MONTH=1,
         *         DAY_OF_YEAR=91,
         *         DAY_OF_WEEK=7,
         *         DAY_OF_WEEK_IN_MONTH=1,
         *         AM_PM=1,
         *         HOUR=2,
         *         HOUR_OF_DAY=14,
         *         MINUTE=44,
         *         SECOND=25,
         *         MILLISECOND=722,
         *         ZONE_OFFSET=32400000,
         *         DST_OFFSET=0
         * ]
         */
 
        System.out.println("Year    : " + cal.get(Calendar.YEAR));
        System.out.println("Month    : " + (cal.get(Calendar.MONTH) + 1));
        System.out.println("Day    : " + cal.get(Calendar.DAY_OF_MONTH));
        System.out.println("Hour    : " + cal.get(Calendar.HOUR_OF_DAY));
        // 하루가 24시간일 경우
        System.out.println("Minute    : " + cal.get(Calendar.MINUTE));
        System.out.println("Second    : " + cal.get(Calendar.SECOND));
 
        cal.set(Calendar.YEAR, 2020);
        System.out.println("Year    : " + cal.get(Calendar.YEAR));
        cal.set(Calendar.MONTH, 5);
        System.out.println("Month    : " + (cal.get(Calendar.MONTH) + 1));
 
        cal.set(2023716);
        System.out.printf("%d year. %d month. %d day", cal.get(Calendar.YEAR), cal.get(Calendar.MONTH) + 1, cal.get(Calendar.DAY_OF_MONTH));
        System.out.println();
 
        int week = cal.get(Calendar.DAY_OF_WEEK);
        switch (week) {
        case 1:    System.out.println("Sun");    break;
        case 2:    System.out.println("Mon");    break;
        case 3:    System.out.println("Tue");    break;
        case 4:    System.out.println("Wend");    break;
        case 5:    System.out.println("Thu");    break;
        case 6:    System.out.println("Fri");    break;
        case 7:    System.out.println("Sat");    break;
        }
    }
}
cs




 - 년,월을 입력받고, 달력을 출력
=====

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
import java.util.*;
 
public class ex0325 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        Calendar cal = Calendar.getInstance();
        
        System.out.print("Input Year: ");
        int year = in.nextInt();
        System.out.print("Input Month: ");
        int month = in.nextInt();
        
        cal.set(year, month-11);
        int week = cal.get(Calendar.DAY_OF_WEEK);
        // 1 일이 몇 일 인지 확인하기
        
        int lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
        // 이 달의 마지막 날 표시
        
        System.out.println("Sun\tMon\tTue\tWend\tthu\tFri\tSat");
        
        for (int i=1; i<week; ++i) {
            // 시작 일까지 공백으로 처리
            System.out.print("\t");
        }
        for (int i=1; i<lastDay; i++) {
            System.out.printf("%d\t",i);
            week++;
            if(week > 7) {
                // 8은 요일이 없으므로
                week=1;
                // 초기화
                System.out.println();
                // 줄 바꿈
            }
        }
    }
}
/*
    Input Year: 2023
    Input Month: 04
    Sun    Mon    Tue    Wend    thu    Fri    Sat
                            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
*/
cs

 



















































반응형