Calendar
类回顾Calendar
是Java
中常用的时间处理工具之一,它提供了很多日历类型常见方法,下面是一些常用的方法及对应的代码和运行结果。Calendar
是一个抽象类, 无法通过直接实例化得到对象。它为特定瞬间与一组诸如YEAR
、MONTH
、DAY_OF_MONTH
、HOUR
等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间1970 年 1 月 1 日的 00:00:00.000
,格里高利历)的偏移量。Calendar
英文含义为日历、挂历、日程表。
Calendar
日历对象Calendar
提供了一个方法getInstance()
,来获得一个Calendar
对象,得到的Calendar
由当前时间初始化。
代码举例:
Calendar cal=Calendar.getInstance();//默认当前时间
get(int field)
通过传入上述的静态属性可以获取对应的年月日星期。
@Test
public void testCalendar(){
Calendar calendar = Calendar.getInstance();
//获取年份
System.out.println("年:"+calendar.get(Calendar.YEAR));
//月份默认从0开始,需要加1
System.out.println("月:"+(calendar.get(Calendar.MONTH) + 1));
//获取日期
System.out.println("日:"+calendar.get(Calendar.DAY_OF_MONTH));
//获取小时
System.out.println("时:"+calendar.get(Calendar.HOUR_OF_DAY));
//获取分钟
System.out.println("分:"+calendar.get(Calendar.MINUTE));
//获取秒
System.out.println("秒:"+calendar.get(Calendar.SECOND));
//获取当前时间是星期几,1表示星期天,2表示星期一,以此类推,7表示星期六
System.out.println("星期:"+calendar.get(Calendar.DAY_OF_WEEK));
}
运行结果:
set(int field , int value)
方法通过传入上述的静态属性(第一个参数)来设置对应的值(第二个参数)
一次性设置时间,代码举例:
@Test
public void testCalendar02(){
Calendar calendar = Calendar.getInstance();
//一次性设置年月日时分秒
calendar.set(2023,11,25,19,30,00);
System.out.println(calendar.getTime());
}
运行结果:
单独设置时间,代码举例:
@Test
public void testCalendar03(){
Calendar calendar = Calendar.getInstance();
//设置年份
calendar.set(Calendar.YEAR,2023);
//设置月份,由于月份下标从0开始 所以赋值月份要-1
calendar.set(Calendar.MONTH,11);
//设置日期
calendar.set(Calendar.DAY_OF_MONTH,24);
//设置小时
calendar.set(Calendar.HOUR_OF_DAY,20);
//设置分钟
calendar.set(Calendar.MINUTE,30);
//设置秒
calendar.set(Calendar.SECOND,30);
//将星期设置为星期天
calendar.set(Calendar.DAY_OF_WEEK,1);
System.out.println(calendar.getTime());
}
运行结果:
Calendar
转换为Date
对象:Date date = calendar.getTime();
Date
对象转换为Calendar
:Date date = new Date();
calendar.setTime(date);
LocalDate
、Calendar
、Date
类型进行加减LocalDate
类型加减以下是LocalDate
类进行日期加减:
@Test
public void testLocalDate(){
//获取当前日期
LocalDate currentDate = LocalDate.now();
System.out.println("当前日期是: " + currentDate);
//加上10天
LocalDate tenDaysLater = currentDate.plusDays(10);
System.out.println("加上10天后的日期是: " + tenDaysLater);
//减去2个月
LocalDate twoMonthsAgo = currentDate.minus(2, ChronoUnit.MONTHS);
System.out.println("减去2个月后的日期是: " + twoMonthsAgo);
}
运行结果:
可以看到,使用LocalDate
类进行加减操作代码比较简洁清晰,也更易读易懂。
Calendar
加减Java
中的Calendar
类提供了许多方法用于对日期和时间进行加减操作。以下是一些常用的方法:
add(int field, int amount)
: 对指定字段加上或减去指定的时间量,如Calendar.YEAR
,Calendar.MONTH
,Calendar.DATE
等。
例如,下面的代码将当前日期上进行加减:
@Test
public void testDateCalculator(){
// 获取当前日期
Calendar calendar = Calendar.getInstance();
System.out.println("当前日期:" + calendar.getTime());
// 加上3天
calendar.add(Calendar.DATE, 3);
System.out.println("加上3天后:" + calendar.getTime());
// 减去1个月,需要注意的是,由于Calendar类的月份从0开始,因此加减月份时需要注意月份的计算。
calendar.add(Calendar.MONTH, -1);
System.out.println("减去1个月后:" + calendar.getTime());
// 加上2年
calendar.add(Calendar.YEAR, 2);
System.out.println("加上2年后:" + calendar.getTime());
}
输出结果:
Date
类型加减Date
类型在java 8
中已经废弃,需要转换为Calendar
类型进行加减。
转换Calendar
类加减时间:
@Test
public void testDateDemo(){
// 创建Calendar对象
Calendar calendar = Calendar.getInstance();
//创建Date类型默认时间
Date date = new Date();
System.out.println("加减前的日期:"+date);
//将Date类型转换为Calendar类型
calendar.setTime(date);
// 加上一小时
calendar.add(Calendar.HOUR_OF_DAY, 1);
// 减去一天
calendar.add(Calendar.DAY_OF_MONTH, -1);
// 获取加减后的日期
date = calendar.getTime();
System.out.println("加减后的日期:"+date);
}
运行结果:
在这个例子中,我们使用了Calendar
类进行日期的加减操作。我们首先创建了一个Calendar
对象,并通过setTime()
方法设置日期,然后使用add()
方法加减日期,最后使用getTime()
方法获取加减后的日期。
值得注意的是,Calendar
类中有很多常量可以用来表示不同的时间单位,如HOUR_OF_DAY
代表小时,DAY_OF_MONTH
代表日,等等。
总的来说,使用Date
类和Calendar
类进行日期加减操作是非常灵活和方便的。