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));

}