Java输入指定年月,打印日历表(Calendar类的使用)

输入年月,输出该月份的日历页:

import java.util.Calendar;//导入Calendar类
import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        Calendar calendar = Calendar.getInstance();//getInstance获取当前日期
        int y = input.nextInt(), m = input.nextInt()-1;
        calendar.set(y,m,1);//设置日期,默认为当月第一天
        int cnt = calendar.get(Calendar.DAY_OF_WEEK)-1;//返回设置的日期是当周的星期几
        for (int i = 0; i < cnt; i++) {
            System.out.printf("     ");
        }
        while(calendar.get(Calendar.MONTH) == m) {
            System.out.printf("%5d",calendar.get(Calendar.DAY_OF_MONTH));//输出是当个月的哪天
            cnt++;
            if(cnt%7==0) System.out.println();
            calendar.add(Calendar.DATE,1);//对日期加一天
        }
    }
}

在获取月份时,Calendar.MONTH + 1 的原因
Java中的月份遵循了罗马历中的规则:当时一年中的月份数量是不固定的,第一个月是JANUARY。而Java中Calendar.MONTH返回的数值其实是当前月距离第一个月有多少个月份的数值,JANUARY在Java中返回“0”,所以我们需要+1。

在获取星期几 Calendar.DAY_OF_WEEK – 1 的原因
Java中Calendar.DAY_OF_WEEK其实表示:一周中的第几天,所以他会受到 第一天是星期几 的影响。
有些地区以星期日作为一周的第一天,而有些地区以星期一作为一周的第一天,这2种情况是需要区分的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值