Java之Date类和Calendar类的区别
Date类:对于处理日期、时间,Java提供了Date类,此处的Date是指java.util包下的Date类;Date对象既包含日期,也包含时间。Date类从JDK1.0起就已经存在,经过不停的迭代更新,导致它的大部分构造器、方法都已经过时淘汰,不再推荐使用;Date表示特定的瞬间,精确到毫秒。它允许把日期解释为年、月、日、小时、分钟和秒值;它也允许格式化和解析日期字符串;
Calendar类: 由于Date类过于古老,许多的构造器和方法都已经过时,已经满足不了需求。因此Java推荐使用Calendar来完成时间计算等操作。首先Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
主要区别:java.util.Date是个日期数据;java.util.Calendar 用于日期相关的计算;
例子区分区别:获取当前时间
根据输出,我们也可以看出Date和Calendar的区别。这就是这两个类最大的区别所在;
Date类常用的构造器:到目前为止,还有两个构造器是推荐使用,其他的构造器已经过时就不在此说明:
1、 Date():分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒);
很简单的一个构造器,获取当前系统时间;
2、 Date(long value):构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。
Date类和Calendar类:实例化特定的时间;
Date类:如下图:
注意:实例化时的格式:yyyy-MM-dd hh:mm:ss。mm:ss必须小写,否则无法转换;HH大小写无影响。
Calendar类:如下
DateFormat dateFormat =new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); Date date =null; try { date =dateFormat.parse( "2019-04-28 20:20:20" ); System.out.println( date ); } catch (ParseException e) { e.printStackTrace(); } Calendar calendar =Calendar.getInstance(); calendar.setTime( date ); System.out.printf( String.valueOf( calendar.getTime() ) );
Date类常用的几个方法:
1、 After(Date when) :测试此日期是否在指定日期之后,返回值:Boolean;
2、 before(Date when) :测试此日期是否在指定日期之前,返回值:Boolean;
3、 CompareTo(Date anotherDate) :比较两个日期的顺序,返回值:int
4、 Equals(Object obj): 比较两个日期的相等性,返回值:Boolean
5、 Date和String之间互转;
Calendar类常用的一个方法:
1、 getInstance(): 使用默认时区和语言环境获得一个日历。