1,产生实例的方式不同
Date类,可使用new关键字,无参和有参的构造函数
如:Date d = new Date();
Date d1 = new Date(2009-1900,3-1,9);
Calendar 类通过调用类的静态方法getInstance()获得实例
Calendar c = Calendar.getInstance();
2,指定时间方式不同
Date类可使用以上所述有参的构造函数生成指定日期的对象。
Calendar类,在获得对象后,调用set方法指定日期
如:Calendar c1 = Calendar.getInstance();
c1.set(2014, 11, 9);
set方法的声明为:
public final void set(int year,int month,int date)
以上示例代码设置的时间为2014年12月9日,其参数的结构和Date类不一样。Calendar类中年份的数值直接书写,月份的值为实际的月份值减1,日期的值就是实际的日期值。
3,细粒度不同
Date着重较细粒度的操作,可以说是对钟表的操作,表示瞬间,精确到时分秒毫秒
Calendar着重日期的操作,也可以说是着重对日历的操作。
4,类型差异
Date 类
Calendar 抽象类