Calendar类学习记录(一)

java对于时间日期操作使用比较多的类为:java.util.Calendar;
下面是总结出常用的方法:

1. 对于年进行操作

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR,2023);
System.out.println("=======日期时间为========="+sdf.format(cal.getTime()));

输出结果:=======日期时间为=========2023-03-17
结论1:Calendar 的set方法修改年时,第二个参数可以指定具体年份

2. 对于月进行操作

cal.set(Calendar.MONTH,0);
System.out.println("=======日期时间1为========="+sdf.format(cal.getTime()));
cal.set(Calendar.MONTH,11);
System.out.println("=======日期时间2为========="+sdf.format(cal.getTime()));
cal.set(Calendar.MONTH,12);
System.out.println("=======日期时间3为========="+sdf.format(cal.getTime()));

输出结果:

=======日期时间1=========2023-01-17
=======日期时间2=========2023-12-17
=======日期时间3=========2024-01-17

结论2:Calendar 的set方法修改月时,第二个参数是从0开始计算,超过当前年份12月后,自动增加至下一年

3. 对于周期进行操作

以下时间时本周7天的时间(从周天开始排序)
在这里插入图片描述

cal.set(Calendar.DAY_OF_WEEK,0);
System.out.println("=======日期时间1为========="+sdf.format(cal.getTime()));
cal.set(Calendar.DAY_OF_WEEK,1);
System.out.println("=======日期时间2为========="+sdf.format(cal.getTime()));
cal.set(Calendar.DAY_OF_WEEK,7);
System.out.println("=======日期时间3为========="+sdf.format(cal.getTime()));
cal.set(Calendar.DAY_OF_WEEK,8);
System.out.println("=======日期时间4为========="+sdf.format(cal.getTime()));

输出结果:

=======日期时间1=========2023-03-18
=======日期时间2=========2023-03-12
=======日期时间3=========2023-03-18
=======日期时间4=========2023-03-12

结论3:Calendar 的set方法对本周某天进行操作时,第二个参数,0为本周六,1为周天,7为周六,7以上从本周天开始重新排序

4. 对于月度日期进行操作

cal.set(Calendar.DAY_OF_MONTH,0);
System.out.println("=======日期时间1为========="+sdf.format(cal.getTime()));
cal.set(Calendar.DAY_OF_MONTH,1);
System.out.println("=======日期时间2为========="+sdf.format(cal.getTime()));
cal.set(Calendar.DAY_OF_MONTH,31);
System.out.println("=======日期时间3为========="+sdf.format(cal.getTime()));
cal.set(Calendar.DAY_OF_MONTH,32);
System.out.println("=======日期时间4为========="+sdf.format(cal.getTime()));

输出结果:

=======日期时间1=========2023-02-28
=======日期时间2=========2023-03-01
=======日期时间3=========2023-03-31
=======日期时间4=========2023-04-01

结论4:Calendar 的set方法对本月某天进行操作时,第二个参数为0代表上个月最后一天,1代表从本月开始第一天开始计数,后面的时间类推

5. 对于年度日期进行操作

cal.set(Calendar.DAY_OF_YEAR,0);
System.out.println("=======日期时间1为========="+sdf.format(cal.getTime()));
cal.set(Calendar.DAY_OF_YEAR,1);
System.out.println("=======日期时间2为========="+sdf.format(cal.getTime()));
cal.set(Calendar.DAY_OF_YEAR,365);
System.out.println("=======日期时间3为========="+sdf.format(cal.getTime()));
cal.set(Calendar.DAY_OF_YEAR,366);
System.out.println("=======日期时间4为========="+sdf.format(cal.getTime()));

输出结果:

=======日期时间1=========2022-12-31
=======日期时间2=========2022-01-01
=======日期时间3=========2023-12-31
=======日期时间4=========2024-01-01

结论5:Calendar 的set方法对本年度某天进行操作时,第二个参数为0代表去年最后一天,1代表今年第一天,后面的时间以此类推

6.对于年度周期进行操作

cal.set(Calendar.WEEK_OF_YEAR,0);
System.out.println("=======日期时间1为========="+sdf.format(cal.getTime()));
cal.set(Calendar.WEEK_OF_YEAR,1);
System.out.println("=======日期时间2为========="+sdf.format(cal.getTime()));
cal.set(Calendar.WEEK_OF_YEAR,2);
System.out.println("=======日期时间3为========="+sdf.format(cal.getTime()));

输出结果:

=======日期时间1=========2022-12-30
=======日期时间2=========2023-01-06
=======日期时间3=========2023-01-13

结论6:Calendar 的set方法对本年度某周进行操作时,第二个参数为0代表去年最后一周周五,1为今年的第一个周五,以此类推。

7. 对于月度周期进行操作

cal.set(Calendar.WEEK_OF_MONTH,0);
System.out.println("=======日期时间1为========="+sdf.format(cal.getTime()));
cal.set(Calendar.WEEK_OF_MONTH,1);
System.out.println("=======日期时间2为========="+sdf.format(cal.getTime()));
cal.set(Calendar.DATE,0);
System.out.println("=======日期时间3为========="+sdf.format(cal.getTime()));
cal.set(Calendar.DATE,1);
System.out.println("=======日期时间4为========="+sdf.format(cal.getTime()));```
输出结果:

```java
=======日期时间1=========2023-02-24
=======日期时间2=========2023-03-03
=======日期时间3=========2023-02-24
=======日期时间4=========2023-03-03

在Calendar 类中对WEEK_OF_MONTHDATE进行了解释
在这里插入图片描述
两种方式的作用是一致的

结论7:Calendar 的set方法对本月度周期进行操作时,第二个参数为0代表上个月最后一周的周五,1代表本月第一个周五

目前整理的主要是对日期进行操作的API,下一章会整理时间的API,小编不定时更新!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值