java.util.Calendar 也是一个抽象类,它有一个具体子类java.util.Gregorian-Calendar(实现罗马形式的日历)。具体类可以被实例化,但是抽象类却不能被实例化,我们首先必须实现抽象类的一个具体子类。
我们现在已经能够格式化并创建一个日期对象了,但是我们如何才能设置和获取日期数据的特定部分呢,如时、日或分钟?我们又如何在日期的这些部分加上或者减去值呢?那就是使用Calendar 类。Calendar 的常见方法见表5.16。
表5.16 Calendar 类的常用方法
如果想设置、获取和操纵一个日期对象的各个特定部分,比如获得小时、日、分钟,计算一个月的某一天和星期几等。这样的情况就需要抽象类java.util.Calendar 和它的子类来处理。其实Calendar 的一些方法会返回int 类型数据,而返回的数据其实是对应于Calendar 中定义的常数。
Calendar 类是一个抽象类,在实际使用时实现特定的子类的对象。创建对象的过程对程序员来说是透明的,只需要使用getInstance()方法创建即可。例如:
由于Calendar 类是抽象类,且Calendar 类的构造方法是protected 的,所以无法使用Calendar 类的构造方法来创建对象,API 中提供了getInstance()方法用来创建对象。
使用该方法获得的Calendar 对象就代表当前的系统时间,由于Calendar 类toString()实现得没有Date 类那么直观,所以直接输出Calendar 类的对象意义不大。
使用Calendar 类的set()方法设置指定的时间,需要首先创建一个Calendar 的对象,然后再设定该对象中的年、月和日参数来完成,代码如下:
以上代码设置的时间为2020 年6 月10 日,其参数的结构和Date 类不一样。Calendar类中年份的数值可以直接书写,月份的值为实际的月份值减1,日期的值就是实际的日期值。
如果只设定某个字段,例如设置日期的值,则可以使用如下set()方法:
在该方法中,参数field 代表要设置的字段的类型,常见类型见表5.17。
表5.17 field 的常见类型
(www.daowen.com)
参数value 代表设置的数值。例如:
该代码的作用是将c 对象代表的时间的日期设置为10 号,其他所有的数值会被重新计算,例如星期几以及对应的相对时间数值等。
使用Calendar 类中的get()方法可以获得Calendar 对象中对应的信息,get()方法的声明如下:
其中参数field 代表需要获得的字段的值,字段说明和上面的set()方法保持一致。需要注意的是,获得的月份为实际的月份值减1,获得的星期值和Date 类不一样。在Calendar 类中,周日是1,周一是2,周二是3,依次类推。
使用Calendar 类中的add()方法可用来在日期的特定部分加上数值,代码如下:
下面演示Calendar 类的使用,如例5.14 所示。
例5.14:
以上程序运行结果如下:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。