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_MONTH
及DATE
进行了解释
两种方式的作用是一致的
结论7:Calendar 的set方法对本月度周期进行操作时,第二个参数为0代表上个月最后一周的周五,1代表本月第一个周五
目前整理的主要是对日期进行操作的API,下一章会整理时间的API,小编不定时更新!!!