概述:
Calendar是一个抽象类【public abstract class Calendar implements Serializable, Cloneable, Comparable {······}】,主要用来操作日历时间字段。在Java.util.Calendar包中,Calendar在开发中基本都会使用得到,这里对经常使用到的做个总结,也可能有遗漏,但日常开发应该够用,遇到再补。
java中Calendar.getInstance()和new Date()的差别是什么?
如果你只是要一个当前时区当前日期时间的话,没什么区别。
Calendar是Java版本更新的产物,可以设置特定的年月日和时区等,
新的程序就已经可以不用Date类了,因为这个类留下来主要是为了兼容以前的程序,
如果完全删掉的话以前用Date的程序就不能运行了。
Calendar.getInstance()是获取一个Calendar对象并可以进行时间的计算,时区的指定.
new Date()是创建了一个date对象,默认是utc格式的。
二者可以相互转化:// 从一个 Calendar 对象中获取 Date 对象::Date date = calendar.getTime();
// 将 Date 对象反应到一个 Calendar 对象中,// Calendar/GregorianCalendar 没有构造函数可以接受 Date 对象
// 所以我们必需先获得一个实例,然后设置 Date 对象:::calendar.setTime(date);
为什么说返回的是Calendar的子类对象呢,因为每个国家地区都有自己的一套日历算法,比如西方国家的第一个星期大部分为星期日,而中国则为星期一,我们来看看getInstance方法获取实例的源码
常用的方法
abstract void add(int field, int amount)
此方法添加或减去指定的时间量,以给定日历字段,基于日历的规则。
boolean after(Object obj)
这个方法返回当前日历是否代表在指定Object表示的时间之后的时间
boolean before(Object when)
这个方法返回当前日历是否代表在指定Object表示的时间之前的时间
void clear()
此方法设置此Calendar的所有日历字段值和时间值(毫秒从历元至偏移量)未定义
Object clone()
此方法创建并返回此对象的一个副本。
int compareTo(Calendar anotherCalendar)
这个方法比较两个Calendar对象表示的时间值(从历元至毫秒偏移量)。
boolean equals(Object obj)
这个方法使日历比较指定的对象。
int get(int field)
此方法返回给定日历字段的值。
int getActualMaximum(int field)
此方法返回指定日历字段可能拥有的最大值,鉴于此Calendar时间值。
举例
1,获取今天或者之后多少天的日期
public void getTest(){
calendar.setTime(new Date());
/*获取今天的日期*/
System.out.println("今天的日期是:"+calendar.get(Calendar.DAY_OF_MONTH));
/*获取十天之后的日期*/
calendar.clear();//避免继承当前系统的时间
calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH)+10);
System.out.println("十天之后的日期是:"+calendar.get(Calendar.DAY_OF_MONTH));
}