Calendar类概述
java.util.Calendar 是日历类,在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。日历类就是方便获取各个时间属性的。Calendar类无法直接创建对象使用,里边有一个静态方法getInstance(),该方法返回了Calendar类的子类对象。Calendar类中提供很多成员常量,代表给定的日历字段:具体如下图
获取方式
Calendar为抽象类,由于语言敏感性,Calendar类在创建对象时并非直接创建,而是通过静态方法创建,返回子类对象,如下:
Calendar静态方法
- public static Calendar getInstance() :使用默认时区和语言环境获得一个日历
//获取Calendar类的子类对象 Calendar cal = Calendar.getInstance();
常用方法
根据Calendar类的API文档,常用方法有:
- public int get(int field) :返回给定日历字段的值。
package demo04; import java.util.Calendar; public class Demo01 { public static void main(String[] args) { //通过静态方法创建,返回Calendar子类对象 Calendar instance = Calendar.getInstance(); /* public int get(int field):返回给定日历字段的值。 参数:传递指定的日历字段(YEAR,MONTH...) 返回值:日历字段代表的具体的值 */ System.out.print("现在是"+instance.get(Calendar.YEAR)+"年"); //在Calendar类中,月份的表示是以0-11代表1-12月。 System.out.print(instance.get(Calendar.MONTH)+"月"); System.out.println(instance.get(Calendar.DAY_OF_MONTH)+"日"); } }
代码执行后的结果
- public void set(int field, int value) :将给定的日历字段设置为给定值。
package demo04; import java.util.Calendar; public class Demo02 { /* public void set(int field, int value):将给定的日历字段设置为给定值。 参数: int field:传递指定的日历字段(YEAR,MONTH...) int value:给指定字段设置的值 */ public static void main(String[] args) { //使用getInstance方法获取Calendar对象 Calendar c = Calendar.getInstance(); //设置年为9999 c.set(Calendar.YEAR, 9999); //设置月为9月 c.set(Calendar.MONTH, 9); //设置日9日 c.set(Calendar.DATE, 9); //获取设置后的日期 System.out.println("现在的日期是" + c.get(Calendar.YEAR) + "年" + c.get(Calendar.MONTH) + "月" + c.get(Calendar.DAY_OF_MONTH) + "日"); //同时设置年月日,可以使用set的重载方法 c.set(8888, 8, 8); System.out.println("现在的日期是" + c.get(Calendar.YEAR) + "年" + c.get(Calendar.MONTH) + "月" + c.get(Calendar.DAY_OF_MONTH) + "日"); } }
代码执行后的结果
- public abstract void add(int field, int amount) :根据日历的规则,为给定的日历字段添加或减去指定的时间量。
package demo04; import java.util.Calendar; public class Demo03 { /* public abstract void add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。 把指定的字段增加/减少指定的值 参数: int field:传递指定的日历字段(YEAR,MONTH...) int amount:增加/减少指定的值 正数:增加 负数:减少 */ public static void main(String[] args) { //使用getInstance方法获取Calendar对象 Calendar c = Calendar.getInstance(); //获取当前的日期 System.out.println("现在的日期是" + c.get(Calendar.YEAR) + "年" + c.get(Calendar.MONTH) + "月" + c.get(Calendar.DAY_OF_MONTH) + "日"); //把年增加2年 c.add(Calendar.YEAR, 2); //把月份减少3个月 c.add(Calendar.MONTH, -3); //获取设置后的日期 System.out.println("现在的日期是" + c.get(Calendar.YEAR) + "年" + c.get(Calendar.MONTH) + "月" + c.get(Calendar.DAY_OF_MONTH) + "日"); } }
代码执行后的结果
- public Date getTime() :返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
package demo04; import java.util.Calendar; import java.util.Date; public class Demo04 { /* public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。 把日历对象,转换为日期对象 */ public static void main(String[] args) { //使用getInstance方法获取Calendar对象 Calendar c = Calendar.getInstance(); //日历对象--->日期对象 Date date = c.getTime(); System.out.println(date); } }
代码执行后的结果
注意事项
- 西方星期的开始为周日,中国为周一。
- 在Calendar类中,月份的表示是以0-11代表1-2月。
- 日期是有大小关系的,时间靠后,时间越大。