Calendar日历类型常见方法

本文详细介绍了Java中的Calendar类,包括其概念、创建方式、常用方法如set(),get(),add(),after(),before()以及字段类型。通过实例演示展示了如何使用这些方法处理日期和时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

✨前言✨
本片文章,主要在于了解Calendar类,及对它常用方法的运用

🍒欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁
🍒博主将持续更新学习记录收获,友友们有任何问题可以在评论区留言

🍊 Calendar类

  Calender 是日历类 在Date后出现 替换掉了许多Date的方法该类将 所有可能用到的时间信息风筝为静态成员变量 方便获取 日历类就是方便获取各个时间属性的

  java.util.caLendar类:日历类:
   Calendar 类是一个抽象类,它为特定瞬间与 YEAR、MONTH、DAY_OF—MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(如获得下星期的日期) 提供了一些方法\

  创建 Calendar 对象不能使用 new 关键字,因为 Calendar 类是一个抽象类,但是它提供了一个 getInstance() 方法来获得 Calendar类的对象。getInstance() 方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化。

Calendar c = Calendar.getInstance();//默认是当前日期

  另外Calendar类是抽象类无法实例化,但是它有实现类所以可以通过创建子类初始化Calendar对象

////创建一个代表2023年11月24日的Calendar对象
Calendar c1= new GregorianCalendar(2023, 11, 24);

🍊 Calendar类常用方法

返回值方法名描述
voidadd(int field, int amount)根据日历的规则,为给定的日历字段添加或减去指定的时间
booleanafter(Object when)判断此 Calendar 表示的时间是否在指定 Object 表示的时间之后,返回判断结果。
booleanbefore(Object when)判断此 Calendar 表示的时间是否在指定 Object 表示的时间之前,返回判断结果。
intcompareTo(Calendar ca)比较两个 Calendar 对象表示的时间值
voidset(int field, int value)将给定的日历字段设置为给定值。
intget(int field)返回给定日历字段的值。
DategetTime()返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象。
longgetTimeInMillis()返回此 Calendar 的时间值,以毫秒为单位。

🍊 Calendar类对象字段类型

Calendar类中用以下这些常量表示不同的意义,jdk内的很多类其实都是采用的这种思想

常量描述
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 c1 = Calendar.getInstance();

调用:

public final void set(int year,int month,int date)
//把Calendar对象c1的年月日分别设这为:2009、6、12
c1.set(2023, 11, 25);

利用字段类型设置
如果只设定某个字段,例如日期的值,则可以使用如下set方法:

public void set(int field,int value)

//把 c1对象代表的日期设置为10号,其它所有的数值会被重新计算
//设置当前月份为11月
c1.set(Calendar.DATE,11);

//把c1对象代表的年份设置为2023年,其他的所有数值会被重新计算
c1.set(Calendar.YEAR,2008);
//其他字段属性set的意义以此类推

System.out.println("年:"+c1.get(Calendar.YEAR)
                +"月:"+c1.get(Calendar.MONTH));

输出为:

在这里插入图片描述


get获取

输出显示为:

System.out.println(c1.get(Calendar.YEAR)
                +":"+c1.get(Calendar.MONTH)
                +":"+c1.get(Calendar.DATE)
                +":"+c1.get(Calendar.HOUR)
                +":"+c1.get(Calendar.MINUTE)
                +":"+c1.get(Calendar.SECOND));

在这里插入图片描述


Add()设置

Calendar c1 = Calendar.getInstance();
//把c1对象的日期加上10,也就是c1也就表示为10天后的日期,
//其它所有的数值会被重新计算
c1.add(Calendar.DATE, 10);
System.out.println("日 :"+c1.get(Calendar.DATE));

//把c1对象的日期减去10,也就是c1也就表示为10天前的日期,
//其它所有的数值会被重新计算
c1.add(Calendar.DATE, -10);
//其他字段属性的add的意义以此类推
System.out.println("日 :"+c1.get(Calendar.DATE));

输出为:

在这里插入图片描述


compareTo()比较设置

// 初化Calaendar对象
Calendar future = Calendar.getInstance();
future.set(2021, 2, 2);
Calendar calendar = Calendar.getInstance();
calendar.set(2011, 2, 1);

// compareTo比较器
int i = future.compareTo(calendar);
if (i > 0) {
    System.out.println("future日期" + futureStr + ",在calendar日期" +
                       calendarStr + "之后"); // <--- 输出这个
} else if (i < 0) {
    System.out.println("future日期" + futureStr + ",在calendar日期" +
                       calendarStr + "之前");
} else {
    System.out.println("相等");
}

//输出为:
//future日期2021-2-2,在calendar日期2011-2-1之后

after(),before()设置

//获取以上指定日期的年月日
String futureStr = future.get(Calendar.YEAR) + 
		"-" + future.get(Calendar.MONTH) +
    "-" + future.get(Calendar.DAY_OF_MONTH);
String calendarStr = calendar.get(Calendar.YEAR) + 
		"-" + calendar.get(Calendar.MONTH) +
    "-" + calendar.get(Calendar.DAY_OF_MONTH);
    
// 判断此 future 表示的时间是否在指定 calendar 表示的时间之后,返回判断结果。
if (future.after(calendar)) {
    System.out.println("future日期" + futureStr + ",在calendar日期" +
                       calendarStr + "之后"); 
}

//其他字段属性的before()的意义以此类推

✨最后✨

总结不易,希望uu们不要吝啬你们的👍哟(^U^)ノ~YO!!
如有问题,欢迎评论区批评指正😁

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值