ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바 예제로 살펴보는 Calendar 여러가지 기능들(1)
    Java/자바의정석 2023. 2. 23. 23:19
    반응형

    앞선 게시글에서 Calendar에 대한 여러가지 기능들을 자세히 살펴보았다. 

    이제는 활요을 해서 사용해보자.

     

    아래의 코드는 자바의정석 연습예제로 있는 문제이다.

    package Chap10;
    
    import sun.util.resources.CalendarData;
    
    import java.util.*;
    
    class Ex10_2 {
        public static void main(String[] args) {
            // 요일은 1부터 시작하기 때문에, DAY_OF_WEEK[0]은 비워두었다.
            final String[] DAY_OF_WEEK = {"","일","월","화","수","목","금","토"};
    
            Calendar date1 = Calendar.getInstance();
            Calendar date2 = Calendar.getInstance();
    
            date1.set(2023, 2, 24); // 2019년 4월 29일로 날짜를 설정한다.
            System.out.println(Calendar.DAY_OF_WEEK); //7
            System.out.println((date1.get(Calendar.DAY_OF_WEEK))); 
            System.out.println("date1은 "+ toString(date1)
                    + DAY_OF_WEEK[date1.get(Calendar.DAY_OF_WEEK)]+"요일이고,");
    
            System.out.println("오늘(date2)은 " + toString(date2)
                    + DAY_OF_WEEK[date2.get(Calendar.DAY_OF_WEEK)]+"요일입니다.");
    
            long difference =
                    (date2.getTimeInMillis() - date1.getTimeInMillis())/1000;
            System.out.println("그 날(date1)부터 지금(date2)까지 "
                    + difference +"초가 지났습니다.");
            System.out.println("일(day)로 계산하면 "+ difference/(24*60*60)
                    +"일입니다."); // 1일 = 24시간 * 60분 * 60초
        }
    
        public static String toString(Calendar date) {
            return date.get(Calendar.YEAR)+"년 "+ (date.get(Calendar.MONTH)+1)
                    +"월 " + date.get(Calendar.DATE) + "일 ";
        }
    }

    ===============실행결과===============

    7
    6
    date1은 2023년 3월 24일 금요일이고,
    오늘(date2)은 2023년 2월 24일 금요일입니다.
    그 날(date1)부터 지금(date2)까지 -2419199초가 지났습니다.
    일(day)로 계산하면 -27일입니다.


    // 요일은 1부터 시작하기 때문에, DAY_OF_WEEK[0]은 비워두었다.
    final String[] DAY_OF_WEEK = {"","일","월","화","수","목","금","토"};

    우선 위와같이 배열을 하나 생성해둔다. 요일은 1부터 시작하기 때문에 0번쨰를 비워두었지만

    month의 경우는 0부터 시작하기 때문에 0번째를 비워두면 안된다.

    Calendar date1 = Calendar.getInstance();
    Calendar date2 = Calendar.getInstance();

    그리곤 Calendar를 사용하기위해 getInstance()를 사용한다.

    date1.set(2023, 2, 24);

    작성일 기준으로 하여 현재 날짜를 세팅하였다. (year, month, day)

    date1.set(Calendar.YEAR, 2017);
    date1.set(Calendar.MONTH, 7);
    date1.set(Calendar.DATE, 15);

    이와같이 개별로 따로 설정도 가능하다는 점도 체크하고 넘어가자.

     

    System.out.println(Calendar.DAY_OF_WEEK); //7
    System.out.println((date1.get(Calendar.DAY_OF_WEEK))); 
    System.out.println("date1은 "+ toString(date1)
            + DAY_OF_WEEK[date1.get(Calendar.DAY_OF_WEEK)]+"요일이고,");

    첫번째  DAY_OF_WEEK를 찍어보면 총 7일이기때문에 7이 출력되어 나온다.

    다음은 getInstance()를 사용하여 생성한 객체를 통해 DAY_OF_WEEK를 사용한다면 오늘 요일을 찾아올 수 있다.

    작성일 기준 금요일이기때문에 6을 출력하게된다.

    toString(date1)의 경우 2023년 3월 24일 을 반환하고 

    +DAY_OF_WEEK[6]이 되어 기존에 FINAL로 선언해두었던 배열에서 6번째 값을 출력해온다. 

     

     

    long difference = (date2.getTimeInMillis() - date1.getTimeInMillis())/1000;
    System.out.println("그 날(date1)부터 지금(date2)까지 " + difference +"초가 지났습니다.");
    System.out.println("일(day)로 계산하면 "+ difference/(24*60*60) +"일입니다.");

    다음으로는 날짜간의 차이를 계산하는 경우이다.

    날짜1 - 날짜2 : 날짜1,2 모두 초단위로 바꾸고난 뒤 뺄셈을 진행해야한다.

     

    반응형

    댓글

Designed by Tistory.