Java使用Calendar類實現動態日歷

本文實例為大傢分享瞭Java使用Calendar類實現動態日歷的具體代碼,供大傢參考,具體內容如下

題目:

使用Calendar類實現一個動態日歷,要求能夠通過輸入一個年份,月份顯示當月的日歷佈局,並且將周六周天使用”[]”包裹起來,另外要求如果顯示為當月日歷時,把當天的日期使用”*”標記出來。

步驟分析:

1.打印日歷

1.1當月總天數

1.2當月第一天是周幾(註意:月份是從0開始,星期是從周日(1)開始)

2.周末用【】包裹

3.當前日期前加*號

代碼實現:

package com.softeem.j2016.example;
 
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
 
/**
 * 1.打印日歷
 * 1.1當月總天數
 * 1.2當月第一天是周幾
 * 2.周末用【】包裹
 * 3.當前日期加“*”
 * @author admin
 * 2021/7/23
 */
public class CalendarDemo {
    //獲取一個日期實例
    static  Calendar c = Calendar.getInstance();
 
    public static void show(int year,int month){
        //獲取當天日期
        Date today = new Date();
        //獲取系統時間的年月日
        int y = today.getYear() +1900;
        int m = today.getMonth() +1;
        int d = today.getDate() ;
 
        c.set(Calendar.YEAR,year);
        c.set(Calendar.MONTH,month-1);
        //設置當前日歷的日期為本月的第一天(7.1)
        c.set(Calendar.DAY_OF_MONTH,1);
        //獲取當前字段所表示日歷的可能具備最大值(本月總天數)
        int days = c.getActualMaximum(Calendar.DAY_OF_MONTH);
        //獲取當月第一天是周幾(7.1前面設置為本月第一天),周日=1;
        int week = c.get(Calendar.DAY_OF_WEEK)-1;
        //如果當天是周日,則設置為7
        week = week == 0?7 :week;
        //打印空格數
        System.out.printf("%d月一共有%d天,1號是周%d\n",month,days,week);
        System.out.printf("==========【%d】年【%d】月==========\n",year,month);
        System.out.println("一\t二\t三\t四\t五\t六\t日");
        System.out.println("================================");
        //計數器
        int count  = 0;
        //(輸出空格)如果當天是星期四則說明有三個空格,需要循環三次,則week-1
        for (int i = 0; i < week - 1; i++) {
            System.out.print("\t");
            count++;
        }
        for (int i = 1; i <=days; i++) {
            count++;
            //根據日期的數值判斷是否是周末,如果是則用"[]"包裹
            String date = (count % 7 ==6 || count % 7 == 0)?"["+i+"]\t":i+"\t";
            //在當前日期前使用"*"標記
            date = (y == year && m == month && d == i)?"*" + date:date;
            //輸出日期
            System.out.print(date);
            //達到七位則換行
            if (count%7==0){
                System.out.println();
            }
        }
    }
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入年份");
        int year = sc.nextInt();
        System.out.println("請輸入月份");
        int month = sc.nextInt();
        show(year,month);
    }
}

效果截圖:

以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。

推薦閱讀: