7.4 日期 时间类 7.4.1 Date类
7.4 日期 时间类
Java
原本提供了Date
和Calendar
用于处理日期、时间的类,包括创建日期、时间对象,获取系统当前日期、时间等操作。但Date
不仅无法实现国际化,而且它对不同属性也使用了前后矛盾的偏移量,比如月份与小时都是从0开始的,月份中的天数则是从1开始的,年又是从1900开始的。
而java util.Calendar
则显得过于复杂,从下面介绍中会看到传统Java
对日期、时间处理的不足。Java8
吸取了Joda-Time
库(一个被广泛使用的日期、时间库)的经验,提供了一套全新的日期时间库.
7.4.1 Date类
Java
提供了Date
类来处理日期、时间(此处的Date
是指java.util
包下的Date
类,而不是java.sql
包下的Date
类),Date
对象既包含日期,也包含时间。Date
类从JDK1.0
起就开始存在了,但正因为它历史悠久,所以它的大部分构造器、方法都已经过时,不再推荐使用了。
Date类还可以使用的构造器
Date
类提供了6个构造器,其中4个已经Deprecated
,也就是Java
不再推荐使用了,剩下的两个构造器如下:
构造器 | 描述 |
---|---|
Date() |
生成一个代表当前日期时间的Date 对象。该构造器在底层调用System.currentTimeMillis() 获得long 整数作为日期参数. |
Date(long date) |
根据指定的long 型整数来生成一个Date 对象。该构造器的参数表示创建的Date 对象和GMT 1970年1月1日00:00:00之间的时间差,以毫秒作为计时单位。 |
Date类中还可以使用的方法
与Date
构造器相同的是,Date
对象的大部分方法也Deprecated
了,剩下为数不多的几个方法:
方法 | 描述 |
---|---|
boolean after(Date when) |
测试该日期是否在指定日期when 之后. |
boolean before(Date when) |
测试该日期是否在指定日期when 之前。 |
long getTime() |
返回该时间对应的long 型整数,即从GMT 1970-01-01 00:00:00到该Date 对象之间的时间差,以毫秒作为计时单位。 |
void setTime(long time) |
设置该Date 对象的时间 |
Date实例
1 | import java.util.Date; |
运行结果
1 | Fri Oct 04 20:36:19 CST 2019 |
尽量少用Date类
总体来说,Date
是一个设计相当糟糕的类,因此Java
官方推荐尽量少用Date
的构造器和方法。
如果需要对日期、时间进行加减
运算,或获取指定时间的年、月、日、时、分、秒信息,可使用Calendar
工具类