java.util.Calendar类表示日历,内含有各种时间信息,以及获取,计算时间的方法。Calendar本身是一个抽象类,有直接子类GregorianCalendar,使用时需要有日历对象,可以借助子类的构造方法创建对象,也可以通过Calendar提供的静态方法getInstance日历对象。
Calendar c = Calendar.getInstance(); // 静态方法
public static Calendar getInstance()
getInstance是Calendar类中的一个静态方法,用来获取它的子类GregorianCalendar对象。
接下来的三个方法都有一个整数类型参数field,这里说明一下,field用来区分当前要获取或者操作的日期时间数据的。field数据的值使用Calendar中定义的整数常量来表示,如下
Calendar.YEAR // 年 Calendar.MONTH // 月 Calendar.DAY_OF_MONTH // 月中的日期 Calendar.HOUR // 小时 Calendar.MINUTE // 分钟 Calendar.SECOND // 秒 Calendar.DAY_OF_WEEK // 星期
public int get(int field) // field 是 日历字段值
get方法用来获取指定日历字段的时间值。
案例
public class CalendarTest { public static void main(String[] args) { Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); System.out.println(year); // 2021 } }
public void set(int field, int value) // field是日历字段值,value是要修改的值
set方法用来设置指定字段的时间值。
案例,例如我想把时间改为2021年5月1号
public class CalendarTest { public static void main(String[] args) { Calendar c = Calendar.getInstance(); c.set(Calendar.YEAR, 2021); c.set(Calendar.MONTH, 4); c.set(Calendar.DATE, 1); System.out.println(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.DATE)); // 2021-5-1 } }
set方法也提供了许多重载方法,方便我们一次性设置年、月、日之类的操作,比如上面的代码可以简化为如下
public class CalendarTest { public static void main(String[] args) { Calendar c = Calendar.getInstance(); c.set(2021,4,1); System.out.println(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.DATE)); // 2021-5-1 } }
public void add(int field, int amount) // field 是日历字段值,amount是增加/减少的值
add方法用来为某个字段增加/减少指定的值
案例,比如在当前日期的基础上增加一星期
public class CalendarTest { public static void main(String[] args) { Calendar c = Calendar.getInstance(); c.set(2021,4,1); System.out.println(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.DATE)); // 2021-5-1 c.add(Calendar.WEEK_OF_YEAR, 1); System.out.println(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.DATE)); // 2021-5-8 } }
这里也可以后退时间,只需改变的值设为负数即可,如下
public class CalendarTest { public static void main(String[] args) { Calendar c = Calendar.getInstance(); c.set(2021,4,8); System.out.println(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.DATE)); // 2021-5-8 c.add(Calendar.WEEK_OF_YEAR, -1); System.out.println(c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.DATE)); // 2021-5-1 } }