Java之Calendar(日历)的用法摘要
概述:
Calendar是一个抽象类【 public abstract class Calendar implements Serializable, Cloneable, Comparable<Calendar> {······}】,主要用来操作日历时间字段。在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));
}