Daily coding

Java Basic : day 13 - Calendar 캘린더 클래스 본문

Language/Java_basic

Java Basic : day 13 - Calendar 캘린더 클래스

sunnnkim 2019. 12. 4. 19:29

Calendar

: 연도, 월, 일 등의 날짜 정보를 얻어올 수 있음
  - Date : 시간도 불러올 수 있음  
  - 일정 관리 : 예약 서비스 등에 많이 사용됨


        // 사용방법 1
       Calendar cal= new GregorianCalendar();
       // 사용방법 2
       Calendar cal2= Calendar.getInstance();
      
     

날짜 : get
      int year = cal.get(Calendar.YEAR);
      int month = cal.get(Calendar.MONTH) +1; // 0 ~ 11로 구성됨(0:1월),데이터 넣을때는 실제 (월-1)해준 값 넣기
      int day = cal.get(Calendar.DATE);
      System.out.println(year + "년 " + month + "월 " + day+"일" );
      // 2019년 12월 4일
      
      
날짜 : set
      cal.set(Calendar.YEAR, 2019);
      cal.set(Calendar.MONTH, Calendar.DECEMBER);
      cal.set(Calendar.DATE, 25);
      
      year = cal.get(Calendar.YEAR);
      month = cal.get(Calendar.MONTH)+1;
      day = cal.get(Calendar.DATE);
      System.out.println(year + "년 " + month + "월 " + day+"일" );
      // 2019년 12월 25일
      
      
오전(0) / 오후(1) : AM_PM
      String ampm = cal.get(Calendar.AM_PM)== 0 ? "오전" : "오후";
      System.out.println(ampm); // 결과: 오전
      

요일DAY_OF_WEEK (int, 1 ~ 7)
      int weekday = cal.get(Calendar.DAY_OF_WEEK); // 1~7 까지 (1:일요일)
      System.out.println(weekday);
      // 수요일 = 4 출력
      switch (weekday) {  
      case 4:
      System.out.println("오늘은 수요일입니다.");
      break;
      }

날짜 바꾸기
      cal.set(Calendar.YEAR,2020);
      cal.set(Calendar.MONTH,5-1);
      
      year = cal.get(Calendar.YEAR);
      month = cal.get(Calendar.MONTH) +1;
      System.out.println(year + "년 " + month + "월 ");
    

 


지정한 달의 마지막 날짜를 구하기 28 29 30 31 중 1


    cal.set(Calendar.MONTH,3-1
     ); // 3월의 마지막 날 
    month = cal.get(Calendar.MONTH)+1;
    int lastday = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
    System.out.println(month+"월의 마지막 날: " + lastday + "일");
      // 3월의 마지막 날: 31일


 
   * getActualMaximum(): ()안의 날짜의 마지막 수를 구한다  
     (MONTH이면 11, DAY이면 31, DAY_OF_YEAR이면 365 등등)  
    lastday = cal.getActualMaximum(Calendar.DAY_OF_MONTH); 
    cal.set(Calendar.DATE, lastday); 
    System.out.println("lastday = " + lastday+ "일까지 입니다."); 

    
달력
       
    // 연월일을 설정하고 달력의 빈칸을 구한다.
    // 설정 : 2020년 2월


* 달력 위쪽 빈칸
    cal.set(Calendar.YEAR, 2020);
    cal.set(Calendar.MONTH, 2-1);
    cal.set(Calendar.DATE, 1);
    
    year = cal.get(Calendar.YEAR);
    month = cal.get(Calendar.MONTH)+1;
    weekday = cal.get(Calendar.DAY_OF_WEEK); // 이미 설정된 날짜(2020.02.01)의 요일을 구한다
  
    // 빈칸 구하기
    int numberOfBlank = (weekday - 1) % 7;
    // 요일 -1 을 한 뒤 7로 나눈 나머지로 계산하면 빈칸의 수가 나온다
   
    System.out.println(year + "년 " + month + "월의 위 쪽 빈칸은 " + numberOfBlank+ "칸 입니다.");
    

      
* 요일
    weekday = cal.get(Calendar.DAY_OF_WEEK);
    
* 맨 밑의 빈칸수
    int numberOfBlankLast = 7 - 마지막날의 요일;
    System.out.println("밑의 빈칸은 +  lastday2 :" + numberOfBlankLast);
    
    
    
    
    // 예제 : 
    // 달력 출력하기
    // 날짜 : 2020.12
    year = 2020;
    month = 12;

    cal.set(Calendar.YEAR, 2019);
    cal.set(Calendar.MONTH, month - 1);
    cal.set(Calendar.DATE, 1);
    
    int _startDay = cal.get(Calendar.DAY_OF_WEEK); // 요일을 숫자로 표현한 것
    int _lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH); // 마지막 날짜: 31
    int _date = 1; // 출력하려는 날짜 (1~31까지)를 담는 변수
    
    System.out.println(year+ "년 "+month+"월 ");
    System.out.println("===================================================");
    String week_day = "일월화수목금토";
    for (int i = 0; i <week_day.length(); i++) {
    char c = week_day.charAt(i);
    System.out.print(c + "\t");
    }System.out.println();
    System.out.println("===================================================");
    
윗쪽 빈칸
    for (int i = 1; i <_startDay ; i++) { // _startDay : 요일임
               System.out.print(" \t");
     }

 


날짜
    for (int i = 0; i < _lastDay; i++) {
          System.out.print(_date+"\t");
          // 일주일 단위로 line 끊기
          // 현재 날짜 + 요일 - 1
          if(( _date + _startDay - 1 ) % 7 == 0 ) {

               System.out.println();   

          }
          _date++;
    }
    
  밑쪽 빈칸
    for (int i = 0; i < (7 - ( _lastDay + _startDay -1 ) % 7) ; i++) {
          System.out.print("*\t");
     }
    System.out.println();
}
}