Java實現(xiàn)按年月打印日歷功能【基于Calendar】-創(chuàng)新互聯(lián)

本文實例講述了Java實現(xiàn)按年月打印日歷功能。分享給大家供大家參考,具體如下:

創(chuàng)新互聯(lián)于2013年開始,先為宜豐等服務(wù)建站,宜豐等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為宜豐企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
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; // 格式化月份,因為要轉(zhuǎn)成yyyyMMdd格式的
    if (month < 10) {
      monthStr = "0" + month;
    } else {
      monthStr = month + ""; // 數(shù)字跟字符串拼接轉(zhuǎn)成字符串格式
    }
    String yearMonthStr = year + monthStr;
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
    Calendar calendarEnd = Calendar.getInstance();
    Calendar calendarStart = Calendar.getInstance();
    // 根據(jù)年份和月份得到輸入月份有多少天
    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("日" + "   " + "一" + "   " + "二" + "   " + "三"
        + "   " + "四" + "   " + "五" + "   " + "六");
  }
}

當前題目:Java實現(xiàn)按年月打印日歷功能【基于Calendar】-創(chuàng)新互聯(lián)
本文路徑:http://bm7419.com/article28/cdgscp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站Google、網(wǎng)站策劃、網(wǎng)站改版、網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化