Java 는 달력 을 연월 별로 인쇄 하 는 기능 을 실현 합 니 다[Calendar 기반]

4159 단어 Java일력Calendar
이 글 은 자바 가 연월 별로 달력 을 인쇄 하 는 기능 을 실현 하 는 것 을 실례 로 서술 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class CalendarBook {
  public static void main(String[] args) throws ParseException {
    CalendarBook cb = new CalendarBook();
    cb.printWeekTitle();
    cb.printCalendar(2018, 3);
  }
  public void printCalendar(int year, int month) throws ParseException {
    String monthStr; //      ,     yyyyMMdd   
    if (month < 10) {
      monthStr = "0" + month;
    } else {
      monthStr = month + ""; //                
    }
    String yearMonthStr = year + monthStr;
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
    Calendar calendarEnd = Calendar.getInstance();
    Calendar calendarStart = Calendar.getInstance();
    //                  
    int monthDays = getMonthLastDay(year, month);
    //    date   
    String dateStartStr = yearMonthStr + "01";
    //    date   
    String dateEndStr = yearMonthStr + monthDays;
    Date startDate = sdf.parse(dateStartStr);
    Date endDate = sdf.parse(dateEndStr);
    calendarStart.setTime(startDate);
    calendarEnd.setTime(endDate);
    //           
    int weeks = calendarEnd.get(Calendar.WEEK_OF_MONTH);
    //            ,        , 1  ,    2
    int dayOfWeek = calendarStart.get(Calendar.DAY_OF_WEEK);
    int day = 1;
    //            ,      
    for (int i = 1; i <= 7; i++) {
      if (i >= dayOfWeek) {
        System.out.print(" " + day + " ");
        day++;
      } else {
        System.out.print("  ");
      }
    }
    System.out.println();
    //              
    for (int week = 1; week < weeks; week++) {
      for (int i = 1; i <= 7; i++) {
        if (day > monthDays) {
          break;
        }
        if (day < 10) {
          System.out.print(" " + day + " ");
        } else {
          System.out.print(day + " ");
        }
        day++;
      }
      System.out.println();
    }
  }
  public int getMonthLastDay(int year, int month) {
    int monthDay;
    int[][] day = { { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
        { 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } };
    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
      //   
      monthDay = day[1][month];
    } else {
      monthDay = day[0][month];
    }
    return monthDay;
  }
  public void printWeekTitle() {
    System.out.println(" " + "   " + " " + "   " + " " + "   " + " "
        + "   " + " " + "   " + " " + "   " + " ");
  }
}

실행 결과 캡 처(실행 효과,글꼴 크기 5 번 이 가장 좋 음):

PS:여기 서 날짜 와 시간 계산 에 관 한 온라인 도 구 를 몇 가지 더 추천 합 니 다.참고 하 시기 바 랍 니 다.
온라인 날짜/일수 계산기:
http://tools.jb51.net/jisuanqi/date_jisuanqi
온라인 달력:
http://tools.jb51.net/bianmin/wannianli
온라인 음력/양력 변환 도구:
http://tools.jb51.net/bianmin/yinli2yangli
유 닉 스 타임 스탬프(timestamp)변환 도구:
http://tools.jb51.net/code/unixtime
자바 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.
본 고 에서 말 한 것 이 여러분 의 자바 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기