- 所有已实现的接口:
-
Serializable
,Cloneable
,Comparable<Date>
Date
类表示时间的特定瞬间,精确到毫秒。
在JDK 1.1之前,Date
类有两个额外的功能。它允许将日期解释为年、月、日、小时、分钟和秒值。它还允许格式化和解析日期字符串。不幸的是,这些功能的API不适合国际化。从JDK 1.1开始,应该使用Calendar
类在日期和时间字段之间进行转换,应该使用DateFormat
类格式化和解析日期字符串。Date
中对应的方法已被弃用。
尽管Date
类旨在反映协调世界时(UTC),但实际情况可能并非如此,这取决于Java虚拟机的主机环境。几乎所有现代操作系统都假定1天 = 24 × 60 × 60 = 86400秒。然而,在UTC中,大约每一两年会有一秒钟的额外时间,称为“闰秒”。闰秒总是作为一天中的最后一秒添加,总是在12月31日或6月30日。例如,1995年的最后一分钟由于添加了闰秒而有61秒长。大多数计算机时钟不够准确,无法反映闰秒的区别。
一些计算机标准是根据格林尼治平均时间(GMT)定义的,它等同于世界时(UT)。GMT是该标准的“民用”名称;UT是相同标准的“科学”名称。UTC和UT之间的区别在于UTC基于原子钟,而UT基于天文观测,就实际目的而言,这是一个微不足道的区别。由于地球的自转不是均匀的(以复杂的方式减速和加速),UT的流逝并不总是均匀的。根据需要将闰秒引入UTC,以使UTC保持在UT1的0.9秒内,UT1是应用了某些校正的UT的一个版本。还有其他时间和日期系统;例如,卫星全球定位系统(GPS)使用的时间标度与UTC同步,但不调整闰秒。进一步信息的一个有趣来源是美国海军天文台(USNO):
https://www.usno.navy.mil/USNO
以及关于“时间系统”的材料:
https://www.usno.navy.mil/USNO/time/master-clock/systems-of-time
其中包括UT、UT1和UTC等各种不同时间系统的描述。
在Date
类的所有接受或返回年、月、日期、小时、分钟和秒值的方法中,使用以下表示:
- 年份y由整数y
- 1900
表示。 - 月份由0到11的整数表示;0表示一月,1表示二月,依此类推;因此11表示十二月。
- 日期(月份中的日期)以通常方式由1到31的整数表示。
- 小时由0到23的整数表示。因此,从午夜到凌晨1点的小时为0,从中午到下午1点的小时为12。
- 分钟以通常方式由0到59的整数表示。
- 秒以0到61的整数表示;值60和61仅在闰秒时出现,即使在实际正确跟踪闰秒的Java实现中也仅如此。由于当前引入闰秒的方式,极不可能在同一分钟内发生两次闰秒,但本规范遵循ISO C的日期和时间约定。
在所有情况下,用于这些目的的方法的参数不必在指示的范围内;例如,日期可以指定为1月32日,解释为2月1日。
- 自版本:
- 1.0
- 参见:
-
Constructor Summary
ConstructorDescriptionDate()
分配一个Date
对象并初始化,以表示分配时的时间,精确到最近的毫秒。Date
(int year, int month, int date) 已弃用。Date
(int year, int month, int date, int hrs, int min) 已弃用。从JDK版本1.1开始,由Calendar.set(year + 1900, month, date, hrs, min)
或GregorianCalendar(year + 1900, month, date, hrs, min)
替代。Date
(int year, int month, int date, int hrs, int min, int sec) 已弃用。从JDK版本1.1开始,由Calendar.set(year + 1900, month, date, hrs, min, sec)
或GregorianCalendar(year + 1900, month, date, hrs, min, sec)
替代。Date
(long date) 分配一个Date
对象并初始化,以表示自“时代”以来的指定毫秒数,即1970年1月1日00:00:00 GMT。已弃用。从JDK版本1.1开始,由DateFormat.parse(String s)
替代。 -
Method Summary
Modifier and TypeMethodDescriptionboolean
检查此日期是否在指定日期之后。boolean
检查此日期是否在指定日期之前。clone()
返回此对象的副本。int
比较两个日期的顺序。boolean
比较两个日期是否相等。static Date
从Instant
对象获取Date
的实例。int
getDate()
已弃用。从JDK版本1.1开始,由Calendar.get(Calendar.DAY_OF_MONTH)
替代。int
getDay()
已弃用。从JDK版本1.1开始,由Calendar.get(Calendar.DAY_OF_WEEK)
替代。int
getHours()
已弃用。从JDK版本1.1开始,由Calendar.get(Calendar.HOUR_OF_DAY)
替代。int
已弃用。从JDK版本1.1开始,由Calendar.get(Calendar.MINUTE)
替代。int
getMonth()
已弃用。从JDK版本1.1开始,由Calendar.get(Calendar.MONTH)
替代。int
已弃用。从JDK版本1.1开始,由Calendar.get(Calendar.SECOND)
替代。long
getTime()
返回由此Date
对象表示的自1970年1月1日00:00:00 GMT以来的毫秒数。int
已弃用。从JDK版本1.1开始,由-(Calendar.get(Calendar.ZONE_OFFSET) + Calendar.get(Calendar.DST_OFFSET)) / (60 * 1000)
替代。int
getYear()
已弃用。从JDK版本1.1开始,由Calendar.get(Calendar.YEAR) - 1900
替代。int
hashCode()
返回此对象的哈希码值。static long
已弃用。从JDK版本1.1开始,由DateFormat.parse(String s)
替代。void
setDate
(int date) 已弃用。从JDK版本1.1开始,由Calendar.set(Calendar.DAY_OF_MONTH, int date)
替代。void
setHours
(int hours) 已弃用。从JDK版本1.1开始,由Calendar.set(Calendar.HOUR_OF_DAY, int hours)
替代。void
setMinutes
(int minutes) 已弃用。从JDK版本1.1开始,由Calendar.set(Calendar.MINUTE, int minutes)
替代。void
setMonth
(int month) 已弃用。从JDK版本1.1开始,由Calendar.set(Calendar.MONTH, int month)
替代。void
setSeconds
(int seconds) 已弃用。从JDK版本1.1开始,由Calendar.set(Calendar.SECOND, int seconds)
替代。void
setTime
(long time) 将此Date
对象设置为表示自1970年1月1日00:00:00 GMT以来time
毫秒后的时间点。void
setYear
(int year) 已弃用。从JDK版本1.1开始,由Calendar.set(Calendar.YEAR, year + 1900)
替代。已弃用。从JDK版本1.1开始,由DateFormat.format(Date date)
替代,使用GMTTimeZone
。将此Date
对象转换为Instant
。已弃用。从JDK版本1.1开始,由DateFormat.format(Date date)
替代。toString()
将此Date
对象转换为形式为的String
:static long
UTC
(int year, int month, int date, int hrs, int min, int sec) 已弃用。从JDK版本1.1开始,被Calendar.set(year + 1900, month, date, hrs, min, sec)
或GregorianCalendar(year + 1900, month, date, hrs, min, sec)
替代,使用UTC时区TimeZone
,然后调用Calendar.getTime().getTime()
。
-
Constructor Details
-
Date
public Date()分配一个Date
对象并初始化,使其表示分配时的时间,精确到最近的毫秒。- 参见:
-
Date
public Date(long date) 分配一个Date
对象并初始化,以表示自"纪元"开始的指定毫秒数,即1970年1月1日00:00:00 GMT。- 参数:
-
date
- 自1970年1月1日00:00:00 GMT以来的毫秒数。 - 参见:
-
Date
Deprecated.As of JDK version 1.1, replaced byCalendar.set(year + 1900, month, date)
orGregorianCalendar(year + 1900, month, date)
.分配一个Date
对象并初始化,使其表示指定year
、month
和date
参数所指定日期的当地时间的午夜。- 参数:
-
year
- 年份减去1900。 -
month
- 月份介于0-11之间。 -
date
- 日期介于1-31之间。 - 参见:
-
Date
Deprecated.As of JDK version 1.1, replaced byCalendar.set(year + 1900, month, date, hrs, min)
orGregorianCalendar(year + 1900, month, date, hrs, min)
.分配一个Date
对象并初始化,使其表示当地时区中由year
、month
、date
、hrs
和min
参数指定的分钟开始的瞬时。- 参数:
-
year
- 年份减去1900。 -
month
- 月份介于0-11之间。 -
date
- 日期介于1-31之间。 -
hrs
- 小时介于0-23之间。 -
min
- 分钟介于0-59之间。 - 参见:
-
Date
Deprecated.As of JDK version 1.1, replaced byCalendar.set(year + 1900, month, date, hrs, min, sec)
orGregorianCalendar(year + 1900, month, date, hrs, min, sec)
.分配一个Date
对象并初始化,使其表示当地时区中由year
、month
、date
、hrs
、min
和sec
参数指定的秒开始的瞬时。- 参数:
-
year
- 年份减去1900。 -
month
- 月份介于0-11之间。 -
date
- 日期介于1-31之间。 -
hrs
- 小时介于0-23之间。 -
min
- 分钟介于0-59之间。 -
sec
- 秒介于0-59之间。 - 参见:
-
Date
Deprecated.As of JDK version 1.1, replaced byDateFormat.parse(String s)
.分配一个Date
对象并初始化,使其表示由字符串s
指示的日期和时间,该字符串被解释为parse(java.lang.String)
方法所示。- 参数:
-
s
- 日期的字符串表示形式。 - 抛出:
-
IllegalArgumentException
- 如果s
无法解释为日期和时间的表示形式。 - 参见:
-
-
Method Details
-
clone
返回此对象的副本。 -
UTC
Deprecated.As of JDK version 1.1, replaced byCalendar.set(year + 1900, month, date, hrs, min, sec)
orGregorianCalendar(year + 1900, month, date, hrs, min, sec)
, using a UTCTimeZone
, followed byCalendar.getTime().getTime()
.根据参数确定日期和时间。这些参数被解释为年、月、月中的日期、一天中的小时、小时内的分钟和分钟内的秒,与具有六个参数的Date
构造函数完全相同,只是这些参数相对于UTC而不是本地时区进行解释。返回所指示的时间表示为该时间与纪元(1970年1月1日GMT时间00:00:00)之间的距离,以毫秒为单位。- 参数:
-
year
- 年份减去1900。 -
month
- 月份介于0-11之间。 -
date
- 日期介于1-31之间。 -
hrs
- 小时介于0-23之间。 -
min
- 分钟介于0-59之间。 -
sec
- 秒介于0-59之间。 - 返回:
- 由参数指定的日期和时间距离1970年1月1日00:00:00 GMT的毫秒数。
- 参见:
-
parse
Deprecated.As of JDK version 1.1, replaced byDateFormat.parse(String s)
.尝试将字符串s
解释为日期和时间的表示。如果尝试成功,则返回表示的时间,以毫秒为单位,从纪元(1970年1月1日GMT 00:00:00)起的时间距离。如果尝试失败,则抛出IllegalArgumentException
异常。它接受许多语法; 特别是,它识别IETF标准日期语法:“Sat, 12 Aug 1995 13:30:00 GMT”。它还理解美国大陆的时区缩写,但为了一般用途,应使用时区偏移:“Sat, 12 Aug 1995 13:30:00 GMT+0430”(比格林尼治子午线西4小时30分钟)。如果未指定时区,则假定为本地时区。GMT和UTC被视为等效的。
字符串
s
从左到右处理,寻找感兴趣的数据。在s
中的ASCII括号字符(
和)
之间的任何内容都将被忽略。括号可以嵌套。否则,在s
中允许的唯一字符是这些ASCII字符:abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789,+-:/
一系列连续的十进制数字被视为十进制数:
- 如果数字前面带有
+
或-
,并且已经识别了一年,则该数字是时区偏移。如果数字小于24,则它是以小时为单位的偏移量。否则,它被视为以24小时制表示的分钟偏移,没有标点符号。前面的-
表示向西的偏移。时区偏移始终相对于UTC(格林尼治)。因此,例如,在字符串中出现-5
表示“比格林尼治西五小时”,+0430
表示“比格林尼治东四小时三十分钟”。允许字符串指定GMT
,UT
或UTC
冗余-例如,GMT-5
或utc+0430
。 - 如果数字满足以下条件之一,则将该数字视为年份:
- 数字大于或等于70,并且后面跟着空格、逗号、斜杠或字符串结束
- 数字小于70,并且已经识别了月份和日期
SimpleDateFormat
中使用的小于100的年份的解释略有不同。 - 如果数字后面跟着冒号,则将其视为小时,除非已经识别了小时,在这种情况下将其视为分钟。
- 如果数字后面跟着斜杠,则将其视为月份(将其减1以产生范围为
0
到11
的数字),除非已经识别了月份,在这种情况下将其视为日期。 - 如果数字后面跟着空格、逗号、连字符或字符串结束,则如果已识别小时但尚未识别分钟,则将其视为分钟;否则,如果已识别分钟但尚未识别秒,则将其视为秒;否则,将其视为日期。
一系列连续的字母被视为一个单词,并按以下方式处理:
- 与
AM
匹配的单词(忽略大小写)将被忽略(但如果尚未识别小时或小时小于1
或大于12
,则解析失败)。 - 与
PM
匹配的单词(忽略大小写)将小时加12
(但如果尚未识别小时或小时小于1
或大于12
,则解析失败)。 - 与
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY
或SATURDAY
的任何前缀匹配的单词(忽略大小写)将被忽略。例如,sat, Friday, TUE
和Thurs
将被忽略。 - 否则,与
JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER
或DECEMBER
的任何前缀匹配的单词(忽略大小写),并按照给定的顺序考虑它们,将被识别为指定的月份,并转换为数字(0
到11
)。例如,aug, Sept, april
和NOV
将被识别为月份。同样,Ma
将被识别为MARCH
,而不是MAY
。 - 与
GMT, UT
或UTC
匹配的任何单词(忽略大小写)将被视为指向UTC。 - 与
EST, CST, MST
或PST
匹配的任何单词(忽略大小写)将被识别为相对于格林尼治西5、6、7或8小时的北美时区。与EDT, CDT, MDT
或PDT
匹配的任何单词(忽略大小写)将被识别为相同时区的夏令时,分别。
一旦整个字符串s被扫描,它将以两种方式之一转换为时间结果。如果已识别时区或时区偏移,则年、月、日、小时、分钟和秒将在UTC中解释,然后应用时区偏移。否则,年、月、日、小时、分钟和秒将在本地时区中解释。
- 参数:
-
s
- 要解析为日期的字符串。 - 返回:
- 由字符串参数表示的自1970年1月1日00:00:00 GMT以来的毫秒数。
- 抛出:
-
IllegalArgumentException
- 如果无法将s
解释为日期和时间的表示。 - 参见:
- 如果数字前面带有
-
getYear
Deprecated.As of JDK version 1.1, replaced byCalendar.get(Calendar.YEAR) - 1900
.返回一个值,该值是包含或以此Date
对象表示的时间瞬间开始的年份减去1900的结果,解释为本地时区。- 返回:
- 此日期表示的年份减去1900。
- 参见:
-
setYear
Deprecated.As of JDK version 1.1, replaced byCalendar.set(Calendar.YEAR, year + 1900)
.将此Date
对象的年份设置为指定值加上1900。修改此Date
对象,使其表示指定年份内的某一时刻,月份、日期、小时、分钟和秒与之前相同,解释为本地时区。(当然,如果日期是2月29日,例如,年份设置为非闰年,则新日期将被视为3月1日。)- 参数:
-
year
- 年份值。 - 参见:
-
getMonth
Deprecated.As of JDK version 1.1, replaced byCalendar.get(Calendar.MONTH)
.返回一个数字,表示包含或以此Date
对象表示的时间瞬间开始的月份。返回的值在0
到11
之间,其中值0
表示一月。- 返回:
- 此日期表示的月份。
- 参见:
-
setMonth
Deprecated.As of JDK version 1.1, replaced byCalendar.set(Calendar.MONTH, int month)
.将此日期的月份设置为指定值。修改此Date
对象,使其表示指定月份内的某一时刻,年份、日期、小时、分钟和秒与之前相同,解释为本地时区。例如,如果日期是10月31日,月份设置为6,则新日期将被视为7月1日,因为6月只有30天。- 参数:
-
month
- 月份值在0-11之间。 - 参见:
-
getDate
Deprecated.As of JDK version 1.1, replaced byCalendar.get(Calendar.DAY_OF_MONTH)
.返回由此Date
对象表示的日期的日期。返回的值在1
到31
之间,表示包含或以此Date
对象表示的时间瞬间开始的日期,解释为本地时区。- 返回:
- 此日期表示的日期。
- 参见:
-
setDate
Deprecated.As of JDK version 1.1, replaced byCalendar.set(Calendar.DAY_OF_MONTH, int date)
.将此Date
对象的日期设置为指定值。修改此Date
对象,使其表示指定日期内的某一时刻,年份、月份、小时、分钟和秒与之前相同,解释为本地时区。例如,如果日期是4月30日,日期设置为31,则将被视为5月1日,因为4月只有30天。- 参数:
-
date
- 日期值在1-31之间。 - 参见:
-
getDay
Deprecated.As of JDK version 1.1, replaced byCalendar.get(Calendar.DAY_OF_WEEK)
.返回由此日期表示的星期几。返回的值(0
= 星期日,1
= 星期一,2
= 星期二,3
= 星期三,4
= 星期四,5
= 星期五,6
= 星期六)表示包含或以此Date
对象表示的时间瞬间开始的星期几,解释为本地时区。- 返回:
- 此日期表示的星期几。
- 参见:
-
getHours
Deprecated.As of JDK version 1.1, replaced byCalendar.get(Calendar.HOUR_OF_DAY)
.返回由此Date
对象表示的小时数。返回的值是一个数字(0
到23
),表示包含或以此Date
对象表示的时间瞬间开始的一天内的小时,解释为本地时区。- 返回:
- 此日期表示的小时。
- 参见:
-
setHours
Deprecated.As of JDK version 1.1, replaced byCalendar.set(Calendar.HOUR_OF_DAY, int hours)
.将此Date
对象的小时设置为指定值。修改此Date
对象,使其表示一天中指定小时的时间点,年、月、日期、分钟和秒与之前相同,按本地时区解释。- 参数:
-
hours
- 小时值。 - 参见:
-
getMinutes
Deprecated.As of JDK version 1.1, replaced byCalendar.get(Calendar.MINUTE)
.返回此日期表示的小时过去的分钟数,按本地时区解释。返回值介于0
和59
之间。- 返回:
- 此日期表示的小时过去的分钟数。
- 参见:
-
setMinutes
Deprecated.As of JDK version 1.1, replaced byCalendar.set(Calendar.MINUTE, int minutes)
.将此Date
对象的分钟设置为指定值。修改此Date
对象,使其表示一小时内指定分钟的时间点,年、月、日期、小时和秒与之前相同,按本地时区解释。- 参数:
-
minutes
- 分钟值。 - 参见:
-
getSeconds
Deprecated.As of JDK version 1.1, replaced byCalendar.get(Calendar.SECOND)
.返回此日期表示的分钟过去的秒数。返回值介于0
和61
之间。值60
和61
只会出现在考虑闰秒的Java虚拟机上。- 返回:
- 此日期表示的分钟过去的秒数。
- 参见:
-
setSeconds
Deprecated.As of JDK version 1.1, replaced byCalendar.set(Calendar.SECOND, int seconds)
.将此Date
的秒设置为指定值。修改此Date
对象,使其表示一分钟内指定秒的时间点,年、月、日期、小时和分钟与之前相同,按本地时区解释。- 参数:
-
seconds
- 秒值。 - 参见:
-
getTime
public long getTime()返回此Date
对象表示的自1970年1月1日00:00:00 GMT以来的毫秒数。- 返回:
- 此日期表示的自1970年1月1日00:00:00 GMT以来的毫秒数。
-
setTime
public void setTime(long time) 将此Date
对象设置为表示自1970年1月1日00:00:00 GMT之后time
毫秒的时间点。- 参数:
-
time
- 毫秒数。
-
before
检查此日期是否早于指定日期。- 参数:
-
when
- 一个日期。 - 返回:
-
如果此
Date
对象表示的时间点严格早于when
表示的时间点,则返回true
;否则返回false
。 - 抛出:
-
NullPointerException
- 如果when
为null。
-
after
检查此日期是否晚于指定日期。- 参数:
-
when
- 一个日期。 - 返回:
-
如果此
Date
对象表示的时间点严格晚于when
表示的时间点,则返回true
;否则返回false
。 - 抛出:
-
NullPointerException
- 如果when
为null。
-
equals
比较两个日期是否相等。结果为true
当且仅当参数不为null
且是表示与此对象相同时间点(毫秒级别)的Date
对象。因此,当且仅当
getTime
方法为两个对象返回相同的long
值时,两个Date
对象才相等。 -
compareTo
比较两个日期的顺序。- 指定者:
-
compareTo
在接口Comparable<Date>
中 - 参数:
-
anotherDate
- 要比较的Date
。 - 返回:
-
如果参数Date等于此Date,则返回值
0
;如果此Date在参数Date之前,则返回小于0
的值;如果此Date在参数Date之后,则返回大于0
的值。 - 抛出:
-
NullPointerException
- 如果anotherDate
为null。 - 自:
- 1.2
-
hashCode
public int hashCode()返回此对象的哈希码值。结果是通过getTime()
方法返回的原始long
值的两半进行异或运算得到的。即,哈希码值是以下表达式的值:(int)(this.getTime()^(this.getTime() >>> 32))
-
toString
将此Date
对象转换为以下形式的String
:dow mon dd hh:mm:ss zzz yyyy
dow
是星期几(周日, 周一, 周二, 周三, 周四, 周五, 周六
)。mon
是月份(一月, 二月, 三月, 四月, 五月, 六月, 七月, 八月, 九月, 十月, 十一月, 十二月
)。dd
是月份中的日期(01
到31
),以两位十进制数字表示。hh
是一天中的小时(00
到23
),以两位十进制数字表示。mm
是小时内的分钟(00
到59
),以两位十进制数字表示。ss
是分钟内的秒数(00
到61
,以两位十进制数字表示。zzz
是时区(可能反映夏令时)。标准时区缩写包括parse
方法识别的那些。如果没有可用的时区信息,则zzz
为空 - 即,它根本没有字符。yyyy
是年份,以四位十进制数字表示。
-
toLocaleString
Deprecated.As of JDK version 1.1, replaced byDateFormat.format(Date date)
.创建此Date
对象的字符串表示,以实现相关形式。意图是该形式应该对Java应用程序的用户是熟悉的,无论它在何处运行。意图类似于ISO C的strftime()
函数支持的"%c
"格式。- 返回:
- 此日期的字符串表示,使用区域设置约定。
- 参见:
-
toGMTString
Deprecated.As of JDK version 1.1, replaced byDateFormat.format(Date date)
, using a GMTTimeZone
.创建此Date
对象的字符串表示,形式如下:d mon yyyy hh:mm:ss GMT
- d是月份中的日期(
1
到31
),以一位或两位十进制数字表示。 - mon是月份(
一月, 二月, 三月, 四月, 五月, 六月, 七月, 八月, 九月, 十月, 十一月, 十二月
)。 - yyyy是年份,以四位十进制数字表示。
- hh是一天中的小时(
00
到23
),以两位十进制数字表示。 - mm是小时内的分钟(
00
到59
),以两位十进制数字表示。 - ss是分钟内的秒数(
00
到61
),以两位十进制数字表示。 - GMT正好是ASCII字符"
GMT
",表示格林尼治标准时间。
结果不依赖于本地时区。
- 返回:
- 此日期的字符串表示,使用互联网GMT约定。
- 参见:
- d是月份中的日期(
-
getTimezoneOffset
Deprecated.As of JDK version 1.1, replaced by-(Calendar.get(Calendar.ZONE_OFFSET) + Calendar.get(Calendar.DST_OFFSET)) / (60 * 1000)
.返回此Date
对象表示的时间相对于UTC的本地时区偏移量(以分钟为单位)。例如,在马萨诸塞州,比格林威治西五个时区:
new Date(96, 1, 14).getTimezoneOffset() 返回 300
new Date(96, 5, 1).getTimezoneOffset() 返回 240
此方法产生与计算以下内容相同的结果:
(this.getTime() - UTC(this.getYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds())) / (60 * 1000)
- 返回:
- 当前时区的时间偏移量(以分钟为单位)。
- 参见:
-
from
从Instant
对象获取Date
的实例。Instant
使用纳秒精度,而Date
使用毫秒精度。转换将截断任何多余的精度信息,就好像纳秒数按一百万进行整数除法一样。Instant
可以存储比Date
更远的未来和更远的过去的时间点。在这种情况下,此方法将抛出异常。- 参数:
-
instant
- 要转换的瞬时时间 - 返回:
-
表示与提供的瞬时时间相同时间线上的
Date
- 抛出:
-
NullPointerException
- 如果instant
为null。 -
IllegalArgumentException
- 如果瞬时时间过大,无法表示为Date
- 自:
- 1.8
-
toInstant
将此Date
对象转换为Instant
。转换将创建一个表示与此
Date
相同时间线上的Instant
。- 返回:
-
表示与此
Date
对象相同时间线上的瞬时时间 - 自:
- 1.8
-
Calendar.set(year + 1900, month, date)
或GregorianCalendar(year + 1900, month, date)
替代。