万年历(Java)

这篇博客介绍了Java中Calendar类的使用,包括如何通过getInstance()方法实例化,设置年、月、日等信息,以及利用Set和Add方法进行日期调整。此外,还展示了如何获取日期对应的周几,并输出日历表格,包括当月最大天数的显示。源代码示例详细展示了整个过程。
摘要由CSDN通过智能技术生成

万年历

Calendar

  • Calendar类位于java.util下,是一个工具类,能够帮我们轻松的实现日期的查询和转换。

实例化

  • Calendar有一个静态方法 getInstance() 可以取得Calendar的实例,通过对实例的操作可以获得我们想要的数据。
Calendar calendar = Calendar.getInstance();//获得calendar的实例(new出一个当前日历)

常量

  • Calendar类中有一系列的静态常量如下所示
常量描述
Calendar.YEAR年份
Calendar.MONTH月份
Calendar.DATE日期
Calendar.DAY_OF_MONTH日期,和上面的字段意义完全相同
Calendar.HOUR12小时制的小时
Calendar.HOUR_OF_DAY24小时制的小时
Calendar.MINUTE分钟
Calendar.SECOND
Calendar.DAY_OF_WEEK返回星期几

Calendar类对象信息的设置

Set设置

// 取得Calendar的实例化
Calendar c = Calendar.getInstance();
// 设置时间,如本文中输入的年和月,即调用get方法获得输入的时间
// 特别注意: 因1月表示为0,故输入的月份要减一
c.set(calendar1.getYear(),calendar1.getMonth()-1,1);

Add设置

/*
*实例化Calendar,获得一个c1对象
*/
Calendar c1 = Calendar.getInstance();
/*
* 把c1对象的日期加上10,也就是c1也就表示为10天后的日期
* 其它所有的数值会被重新计算
*/
c1.add(Calendar.DATE, 10);
/*
* 把c1对象的日期减去10,也就是c1也就表示为10天前的日期
* 其它所有的数值会被重新计算
*/
c1.add(Calendar.DATE, -10);

获取时间对应的周几

int week = c.get(Calendar.DAY_OF_WEEK);

输出标题及当月最大天数

//标题 即第一行表头
System.out.println("日\t一\t二\t三\t四\t五\t六");
// 输出一号之前对应的空格
for(int i = 1;i < week;i++ ){
	System.out.print("    ");
}
// 调用getActualMaximum()函数输出当月的最大天数
int maxMonthDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);

附录(源码)

package HomeWork;

import java.util.Calendar;
import java.util.Scanner;

public class Calendar1 {
    private int year;
    private int month;

    public int getYear() {
        return year;
    }
    
    public void setYear(int year) {
        this.year = year;
    }

    public int getMonth() {
        return month;
    }

    public void setMonth(int month) {
        if (month >= 1 && month <= 12)
            this.month = month;
        else {
            System.out.println("月份必须是1-12");
        }
    }


    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Calendar1 calendar1 = new Calendar1();
        System.out.print("请输入年份: ");
        calendar1.setYear(scanner.nextInt());
        System.out.print("请输入月份: ");
        calendar1.setMonth(scanner.nextInt());
        Calendar c = Calendar.getInstance();
        c.set(calendar1.getYear(),calendar1.getMonth()-1,1);

        int week = c.get(Calendar.DAY_OF_WEEK);

        System.out.println("日\t一\t二\t三\t四\t五\t六");
        for(int i = 1;i < week;i++ ){
            System.out.print("    ");
        }
        int maxMonthDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);
        for(int i = 1 ; i <= maxMonthDay;i++){
            int date = c.get(Calendar.DATE);
            if((i+week-2)%7==0){
                System.out.println();
            }
            System.out.printf("%-4d",date);
            c.add(Calendar.DATE,1);
        }
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Redamancy_WC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值