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!!如有问题,欢迎评论区批评指正😁

相关推荐
朦胧之1 小时前
AI 编程-老项目改造篇
java·前端·后端
程序猿大帅6 小时前
别再只当调包侠了:用 Spring AI 落地 Function Calling,我被大模型硬生生砸出了三个大坑
java
程序员晓琪7 小时前
约定大于配置:基于 Java 包名自动生成 API 版本路由的最佳实践
java·spring boot·后端
Flittly7 小时前
【AgentScope Java新手村系列】(11)中断与恢复
java·spring boot·spring
众少成多积小致巨7 小时前
JNI (Java Native Interface) 技术手册中文参考指南
android·java·c++
东坡白菜8 小时前
破局全栈:前端开发的Java入门实战记录—JPA(2)
java·后端
SimonKing14 小时前
艹,维护AI写的代码,我心态崩了......
java·后端·程序员
用户2986985301414 小时前
Java Word 文档样式进阶:段落与文本背景色设置完全指南
java·后端
小bo波1 天前
从"任意文件复制"深挖Java I/O:字符流与字节流的本质抉择
java·nio·io流·后端开发·文件复制
nanxun8862 天前
记一次诡异的 Docker 容器"串包"故障排查
java