Calendar日历类型常见方法(必看!!)

Hi i,m JinXiang


⭐ 前言 ⭐

本篇文章主要介绍Calendar日历类型的几种常见方法以及部分理论知识


🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁

🍉博主收将持续更新学习记录获,友友们有任何问题可以在评论区留言


⭐什么是Calendar日历类型?

Calendar类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。Calendar英文含义为日历、挂历、日程表。

⭐为什么要用Calendar日历类型?

1、Calendar日历,主要用来处理时间,例如获取事件的某个部分,改变时间的某个部分,对时间进行加减操作等

2、Calendar日历与Date的区别,Date主要是获取一个日期的,里面也有很多操作日期的方法,但是早已经过期了,不再使用。所以操作日期主要使用Calendar

⭐使用Calendar日历类型

Calendar 是一个抽象类, 无法通过直接实例化得到对象。因此, Calendar 提供了一个方法 getInstance,来获得一个Calendar对象, 得到的 Calendar 由当前时间初始化。

与其他区域设置敏感的类一样, Calendar提供了一种类方法"getInstance",用于获取此类型的一般有用的对象。 Calendar的"getInstance"方法返回一个Calendar对象,其日历字段已使用当前日期和时间进行初始化:

复制代码
Calendar c1 = Calendar.getInstance();

使用Calendar获得年月日时分秒:

复制代码
// 获得年份
int year = c1.get(Calendar.YEAR);
// 获得月份
int month = c1.get(Calendar.MONTH) + 1;
// 获得日期
int date = c1.get(Calendar.DATE);
// 获得小时
int hour = c1.get(Calendar.HOUR_OF_DAY);
// 获得分钟
int minute = c1.get(Calendar.MINUTE);
// 获得秒
int second = c1.get(Calendar.SECOND);
// 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推)
int day = c1.get(Calendar.DAY_OF_WEEK);

Calendar对象可以产生实现特定语言和日历风格的日期时间格式化所需的所有日历字段值(例如日语 - 公历,日语 - 繁体)。 Calendar定义某些日历字段返回的值的范围及其含义。 例如,日历系统第一个月的值为MONTH == JANUARY为所有日历。 其他值由具体的子类定义,如ERA 。 有关详细信息,请参阅博客 jdk_api_1.8-JAVA中文版API手册(免费版)-CSDN博客 中提供的APL工具,查看各个实体文档和子类文档进行深入了解!

Calendar日历操作

  • 日历字段可以用三种方法来改变set()add()roll()

  • 此外,与set()不同, add()是强制立即重新计算日历的毫秒数和所有字段。

1、add()

1)要在当前年月日上添加一天,可以使用Calendar类的add方法,并将时间单元设置为Calendar.DAY_OF_MONTH,示例如下:

复制代码
import java.util.Calendar;
 
public class Calendar1 {
    @Test
    public void Test(){
        //Calendar日历类型
        Calendar calendar = Calendar.getInstance();
        System.out.println("当前日期是:" + calendar.getTime());
 
        // 在当前日期上增加一天
        calendar.add(Calendar.DAY_OF_MONTH, 1);
 
        System.out.println("增加一天后的日期是:" + calendar.getTime());
    }
}

2)在日期或时间上增加或减少指定的时间单元:

复制代码
calendar.add(Calendar.YEAR, 1); // 增加1年
calendar.add(Calendar.MONTH, -2); // 减少2个月
calendar.add(Calendar.DAY_OF_MONTH, 7); // 增加7天

2、set()

设置Calendar表示的日期和时间:

复制代码
calendar.set(Calendar.YEAR, 2022);
calendar.set(Calendar.MONTH, Calendar.JANUARY); // 月份从0开始计数,0表示一月
calendar.set(Calendar.DAY_OF_MONTH, 15);

3、roll()

roll()函数处理,只会对相应的字段进行处理,不会智能的对其它字段也进行逻辑上的改变。

add()函数会在逻辑上改变其它字段,使结果正确。

取某个日历之前的某个月

复制代码
calendar.set(2002, 0, 12);  //代表2002年1月12日
calendar.roll(Calendar.MONTH, -1);  //这样就将日期设置成了2002年12月12日。
System.out.println(calendar.getTime().toString());

Calendar与Date之间的转换

1)将Calendar转换为Date对象:

复制代码
Date date = calendar.getTime();

2)将Date对象转换为Calendar:

复制代码
Date date = new Date();
calendar.setTime(date);

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

相关推荐
步菲2 小时前
springboot canche 无法避免Null key错误, Null key returned for cache operation
java·开发语言·spring boot
毕设源码-朱学姐2 小时前
【开题答辩全过程】以 基于SpringBoot的中医理疗就诊系统为例,包含答辩的问题和答案
java·spring boot·后端
2201_757830876 小时前
全局异常处理器
java
小徐Chao努力7 小时前
【Langchain4j-Java AI开发】09-Agent智能体工作流
java·开发语言·人工智能
Coder_Boy_7 小时前
SpringAI与LangChain4j的智能应用-(理论篇3)
java·人工智能·spring boot·langchain
Coder_Boy_7 小时前
基于SpringAI的智能平台基座开发-(六)
java·数据库·人工智能·spring·langchain·langchain4j
伯明翰java8 小时前
Java数据类型与变量
java·开发语言
想用offer打牌8 小时前
如何开启第一次开源贡献之路?
java·后端·面试·开源·github
小许学java9 小时前
Spring原理
java·spring·生命周期·作用域·原理
教练、我想打篮球9 小时前
122 Hession,FastJson,ObjectInputStream的序列化反序列化相同引用的处理
java·config·utils