1. 程式人生 > >java 用 Calendar類寫萬年曆

java 用 Calendar類寫萬年曆

輸入年份和日期打印出本年本月份的日曆,如圖:

這裡寫圖片描述

本題主要用到了java的 Calender類。

Calendar 類是一個抽象類,它為特定瞬間與一組諸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日曆欄位之間的轉換提供了一些方法,併為操作日曆欄位(例如獲得下星期的日期)提供了一些方法。瞬間可用毫秒值來表示,它是距曆元(即格林威治標準時間 1970 年 1 月 1 日的 00:00:00.000,格里高利曆)的偏移量。

該類還為實現包範圍外的具體日曆系統提供了其他欄位和方法。這些欄位和方法被定義為 protected。

這裡寫圖片描述

簡單的小例項:

public static void
main(String[] args) { Calendar nowc = Calendar.getInstance(); System.out.println(nowc.get(Calendar.YEAR));//年份 System.out.println(nowc.get(Calendar.MONTH));//一年的第幾個月,從0開始 System.out.println(nowc.get(Calendar.DAY_OF_MONTH));//這個月份的第幾天,從1開始 System.out.println(nowc.get
(Calendar.DAY_OF_WEEK));//這個月份的第幾個星期,從0開始 }

執行結果(當天日期:2016-5-16)

這裡寫圖片描述

判斷是否為閏年,判斷該月份的天數

public static int Days(int year,int month)
    {
        int days=0;
        if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
        {
            days = 31;
        }
        else if(month
==4||month==6||month==9||month==11) { days = 30; } else { if(year%4==0||year%400==0&&year%100!=0) { days = 28; } else { days = 29; } } return days; }

得到月份天數後,打印出本月份的萬年曆

Scanner sc  = new Scanner(System.in);
        Calendar nowc = Calendar.getInstance();
        System.out.println("請輸入年份");
        int year = sc.nextInt();
        System.out.println("請輸入月份");
        int month = sc.nextInt();
        int days = Days(year,month);
        nowc.set(year,month-1,1);
        int week = nowc.get(Calendar.DAY_OF_WEEK)-1;
        int[] wnl = new int[42];
        for(int i=1;i<=days;i++)
        {
            wnl[week++]=i;
        }
        System.out.println("日\t一\t二\t三\t四\t五\t六");
        for(int i=0;i<week;i++)
        {
            if(wnl[i]!= 0)
            {
                System.out.print(wnl[i]+"\t");
                if((i+1)%7==0)
                {
                    System.out.println("");
                }
            }
            else
            {
                System.out.print(" "+"\t");
            }

        }
    }