阅读(971) (0)

鸿蒙OS Date

2022-06-16 16:22:16 更新

Date

java.lang.Object

|---java.util.Date

public class Date
extends Object
implements 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 同步,但未针对闰秒进行调整。 进一步信息的一个有趣来源是美国海军天文台,特别是时间理事会,位于:

     http://tycho.usno.navy.mil 

以及他们对“时间系统”的定义:

     http://tycho.usno.navy.mil/systime.html 

在接受或返回年、月、日、小时、分钟和秒值的 Date 类的所有方法中,使用以下表示:

  • 年份 y 由整数 y - 1900 表示。
  • 一个月用 0 到 11 的整数表示; 0 是一月,1 是二月,以此类推; 因此 11 是 12 月。
  • 日期(月中的某天)通常以 1 到 31 的整数表示。
  • 小时由 0 到 23 之间的整数表示。因此,从午夜到凌晨 1 点的小时是 0 小时,从中午到下午 1 点的小时。 是 12 小时。
  • 一分钟以通常的方式用 0 到 59 的整数表示。
  • 秒用 0 到 61 的整数表示; 值 60 和 61 仅出现在闰秒中,即使如此,也仅出现在实际正确跟踪闰秒的 Java 实现中。 由于目前引入闰秒的方式,同一分钟内不太可能出现两个闰秒,但本规范遵循 ISO C 的日期和时间约定。

在所有情况下,为这些目的而给出的方法的论据不必落在指定的范围内; 例如,日期可以指定为 1 月 32 日,并被解释为 2 月 1 日。

构造函数摘要

构造函数 描述
Date() 分配一个 Date 对象并对其进行初始化,以便它表示分配它的时间,精确到毫秒。
Date(int year, int month, int date) 已弃用。 从 JDK 版本 1.1 开始,由 Calendar.set(year + 1900, month, date) 或 GregorianCalendar(year + 1900, month, 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)以来的指定毫秒数。
Date(String s) 已弃用。 从 JDK 1.1 版开始,由 DateFormat.parse(String s) 取代。

方法总结

修饰符和类型 方法 描述
boolean after(Date when) 测试此日期是否在指定日期之后。
boolean before(Date when) 测试此日期是否早于指定日期。
Object clone() 返回此对象的副本。
int compareTo(Date anotherDate) 比较两个订购日期。
boolean equals(Object obj) 比较两个日期是否相等。
static Date from(Instant instant) 从 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 getMinutes() 已弃用。 从 JDK 版本 1.1 开始,由 Calendar.get(Calendar.MINUTE) 取代。
int getMonth() 已弃用。 从 JDK 1.1 版开始,由 Calendar.get(Calendar.MONTH) 取代。
int getSeconds() 已弃用。 从 JDK 1.1 版开始,由 Calendar.get(Calendar.SECOND) 取代。
long getTime() 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
int getTimezoneOffset() 已弃用。 从 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 parse(String s) 已弃用。 从 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 之后的时间毫秒的时间点。
void setYear(int year) 已弃用。 从 JDK 版本 1.1 开始,由 Calendar.set(Calendar.YEAR, year + 1900) 取代。
String toGMTString() 已弃用。 从 JDK 版本 1.1 开始,使用 GMT 时区替换为 DateFormat.format(Date date)。
Instant toInstant() 将此 Date 对象转换为 Instant。
String toLocaleString() 已弃用。 从 JDK 1.1 版开始,由 DateFormat.format(Date date) 取代。
String toString() 将此 Date 对象转换为以下形式的字符串:
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 时区,后跟 通过 Calendar.getTime().getTime()。
从类 java.lang.Object 继承的方法
finalize, getClass, notify, notifyAll, wait, wait, wait

构造函数详细信息

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 public Date(int year, int month, int date)

已弃用。 从 JDK 版本 1.1 开始,由 Calendar.set(year + 1900, month, date) 或 GregorianCalendar(year + 1900, month, date) 取代。

分配一个 Date 对象并对其进行初始化,使其表示本地时间午夜,在年、月和日期参数指定的一天的开始。

参数:

参数名称 参数描述
year 年减去 1900。
month 0-11 之间的月份。
date 1-31 之间的一个月中的一天。

Date

@Deprecated public 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 对象并对其进行初始化,以便它表示本地时区中由年、月、日、小时和分钟参数指定的分钟开始处的瞬间。

参数:

参数名称 参数描述
year 年减去 1900。
month 0-11 之间的月份。
date 1-31 之间的一个月中的一天。
hrs 0-23 之间的时间。
min 0-59 之间的分钟数。

Date

@Deprecated public 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 对象并对其进行初始化,以便它表示本地时区中由年、月、日、小时、分钟和秒参数指定的秒的开始时刻。

参数:

参数名称 参数描述
year 年减去 1900。
month 0-11 之间的月份。
date 1-31 之间的一个月中的一天。
hrs 0-23 之间的时间。
min 0-59 之间的分钟数。
sec 0-59 之间的秒数。

Date

@Deprecated public Date(String s)

已弃用。 从 JDK 1.1 版开始,由 DateFormat.parse(String s) 取代。

分配一个 Date 对象并对其进行初始化,以便它表示由字符串 s 指示的日期和时间,就像由 Date#parse 方法解释一样。

参数:

参数名称 参数描述
s 日期的字符串表示形式。

方法详情

clone

public Object clone()

返回此对象的副本。

覆盖:

在类 Object 中克隆

返回:

此实例的克隆。

UTC

@Deprecated public 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 时区,后跟 通过 Calendar.getTime().getTime()。

根据参数确定日期和时间。 参数被解释为年、月、日、小时、小时内的分钟和分钟内的秒,与具有六个参数的 Date 构造函数完全相同,只是参数是相对于 UTC 进行解释的 而不是本地时区。 返回的时间表示为该时间与纪元(1970 年 1 月 1 日 00:00:00 GMT)的距离,以毫秒为单位。

参数:

参数名称 参数描述
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 public static long parse(String s)

已弃用。从 JDK 1.1 版开始,由 DateFormat.parse(String s) 取代。

尝试将字符串 s 解释为日期和时间的表示。如果尝试成功,则返回指示的时间,表示为该时间与纪元(1970 年 1 月 1 日 00:00:00 GMT)的距离,以毫秒为单位。如果尝试失败,则会引发 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 表示“格林威治以西 5 小时”,+0430 表示“格林威治以东 4 小时 30 分钟”。 允许字符串冗余地指定 GMT、UT 或 UTC,例如 GMT-5 或 utc+0430。

  • 如果满足以下条件之一,则该数字被视为年份:

  • 数字等于或大于 70,后跟空格、逗号、斜杠或字符串结尾
  • 数字小于70,并且已经识别了一个月和一个月的一天

如果识别的年份数小于 100,则将其解释为相对于一个世纪的缩写年份,其日期在 Date 类初始化之前的 80 年和之后的 19 年内。 调整年份数后,减去1900。 例如,如果当前年份是 1999,则假设 19 到 99 范围内的年份表示 1919 到 1999,而假设 0 到 18 之间的年份表示 2000 到 2018。请注意,这与年份的解释略有不同 SimpleDateFormat 中使用的小于 100。

  • 如果数字后跟冒号,则将其视为一个小时,除非已经识别出一个小时,在这种情况下,它被视为一分钟。

  • 如果数字后跟斜线,则视为月份(减 1 以产生 0 到 11 范围内的数字),除非已经识别月份,在这种情况下,它被视为 一个月的一天。

  • 如果数字后跟空格、逗号、连字符或字符串结尾,则如果已识别小时但未识别分钟,则将其视为分钟; 否则,如果一分钟被识别,但不是一秒,则视为一秒; 否则,它被视为一个月中的一天。

连续的字母序列被视为一个单词,处理如下:

  • 匹配 AM 的单词,忽略大小写,将被忽略(但如果一个小时未被识别或小于 1 或大于 12,则解析失败)。
  • 匹配 PM 的单词,忽略大小写,将 12 添加到小时(但如果小时未被识别或小于 1 或大于 12,则解析失败)。
  • 任何匹配 SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY 或 SATURDAY 前缀的任何单词,忽略大小写,将被忽略。例如,sat、Friday、TUE 和 Thurs 将被忽略。
  • 否则,任何匹配 1 月、2 月、3 月、4 月、5 月、6 月、7 月、8 月、9 月、10 月、11 月或 12 月的任何前缀的单词,忽略大小写,并按照此处给出的顺序考虑它们,被识别为指定月份并转换为数字(0 到 11)。例如,八月、九月、四月和十一月被识别为月份。 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 以来的毫秒数,由字符串参数表示。

getYear

@Deprecated public int getYear()

已弃用。 从 JDK 1.1 版开始,由 Calendar.get(Calendar.YEAR) - 1900 取代。

返回一个值,该值是从包含或以此 Date 对象表示的时刻开始的年份减去 1900 的结果,如本地时区所解释的那样。

返回:

此日期所代表的年份,减去 1900。

setYear

@Deprecated public void setYear(int year)

已弃用。 从 JDK 版本 1.1 开始,由 Calendar.set(Calendar.YEAR, year + 1900) 取代。

设置此 Date 对象的年份为指定值加 1900。修改此 Date 对象,使其表示指定年份内的一个时间点,月、日、时、分、秒与之前相同, 按照当地时区的解释。 (当然,例如,如果日期是 2 月 29 日,并且年份设置为非闰年,那么新日期将被视为 3 月 1 日。)

参数:

参数名称 参数描述
year 年值。

getMonth

@Deprecated public int getMonth()

已弃用。 从 JDK 1.1 版开始,由 Calendar.get(Calendar.MONTH) 取代。

返回一个表示月份的数字,该数字包含此 Date 对象表示的时间点或以该时间点开始。 返回的值介于 0 和 11 之间,其中值 0 表示一月。

返回:

此日期表示的月份。

setMonth

@Deprecated public void setMonth(int month)

已弃用。 从 JDK 版本 1.1 开始,由 Calendar.set(Calendar.MONTH, int month) 取代。

将此日期的月份设置为指定值。 修改此 Date 对象,使其表示指定月份内的一个时间点,其中年、日期、小时、分钟和秒与以前相同,以本地时区解释。 例如,如果日期是 10 月 31 日,并且月份设置为 6 月,那么新日期将被视为 7 月 1 日,因为 6 月只有 30 天。

参数:

参数名称 参数描述
month 0-11 之间的月份值。

getDate

@Deprecated public int getDate()

已弃用。 从 JDK 版本 1.1 开始,由 Calendar.get(Calendar.DAY_OF_MONTH) 取代。

返回此 Date 对象表示的月份中的哪一天。 返回的值介于 1 和 31 之间,表示包含此 Date 对象所表示的时间点或以该时间点开始的月份的日期,如本地时区所解释的那样。

返回:

此日期表示的月份中的某天。

setDate

@Deprecated public void setDate(int date)

已弃用。 从 JDK 1.1 版开始,由 Calendar.set(Calendar.DAY_OF_MONTH, int date) 取代。

将此 Date 对象的日期设置为指定值。 修改此 Date 对象,使其表示月份中指定日期内的时间点,年、月、小时、分钟和秒与以前相同,以本地时区解释。 例如,如果日期是 4 月 30 日,并且日期设置为 31,那么它将被视为 5 月 1 日,因为 4 月只有 30 天。

参数:

参数名称 参数描述
date 1-31 之间的月份值。

getDay

@Deprecated public int getDay()

已弃用。 从 JDK 1.1 版开始,由 Calendar.get(Calendar.DAY_OF_WEEK) 取代。

返回此日期表示的星期几。 返回值(0 = 星期日,1 = 星期一,2 = 星期二,3 = 星期三,4 = 星期四,5 = 星期五,6 = 星期六)表示包含或开始于由此表示的时间瞬间的星期几 日期对象,以本地时区解释。

返回:

此日期表示的星期几。

getHours

@Deprecated public int getHours()

已弃用。 从 JDK 1.1 版开始,由 Calendar.get(Calendar.HOUR_OF_DAY) 取代。

返回此 Date 对象表示的小时。 返回值是一个数字(0 到 23),表示一天中的小时,该小时包含或开始于此 Date 对象表示的时刻,如本地时区所解释的那样。

返回:

此日期表示的小时。

setHours

@Deprecated public void setHours(int hours)

已弃用。 从 JDK 1.1 版开始,由 Calendar.set(Calendar.HOUR_OF_DAY, int hours) 取代。

将此 Date 对象的小时设置为指定值。 修改此 Date 对象,使其表示一天中指定小时内的时间点,年、月、日、分和秒与以前相同,以本地时区解释。

参数:

参数名称 参数描述
hours 小时值。

getMinutes

@Deprecated public int getMinutes()

已弃用。 从 JDK 版本 1.1 开始,由 Calendar.get(Calendar.MINUTE) 取代。

返回此日期表示的小时后的分钟数,以本地时区解释。 返回的值介于 0 和 59 之间。

返回:

此日期表示的小时后的分钟数。

setMinutes

@Deprecated public void setMinutes(int minutes)

已弃用。 从 JDK 版本 1.1 开始,由 Calendar.set(Calendar.MINUTE, int minutes) 取代。

将此 Date 对象的分钟设置为指定值。 修改此 Date 对象,使其表示指定分钟内的时间点,其中年、月、日、小时和秒与以前相同,以本地时区解释。

参数:

参数名称 参数描述
minutes 分钟的值。

getSeconds

@Deprecated public int getSeconds()

已弃用。 从 JDK 1.1 版开始,由 Calendar.get(Calendar.SECOND) 取代。

返回此日期表示的分钟后的秒数。 返回的值介于 0 和 61 之间。值 60 和 61 只能出现在那些考虑闰秒的 Java 虚拟机上。

返回:

此日期表示的分钟后的秒数。

setSeconds

@Deprecated public void setSeconds(int seconds)

已弃用。 从 JDK 1.1 版开始,由 Calendar.set(Calendar.SECOND, int seconds) 取代。

将此日期的秒数设置为指定值。 修改此 Date 对象,使其表示指定秒内的时间点,其中年、月、日、小时和分钟与以前相同,按本地时区解释。

参数:

参数名称 参数描述
seconds 秒值。

getTime

public long getTime()

返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

返回:

自 1970 年 1 月 1 日 00:00:00 GMT 以来此日期所代表的毫秒数。

setTime

public void setTime(long time)

将此 Date 对象设置为表示 1970 年 1 月 1 日 00:00:00 GMT 之后的时间毫秒的时间点。

参数:

参数名称 参数描述
time 毫秒数。

before

public boolean before(Date when)

测试此日期是否早于指定日期。

参数:

参数名称 参数描述
when 一个日期。

返回:

当且仅当此 Date 对象表示的时刻严格早于 when 表示的时刻时,才为true; 否则为false。

Throws:

Throw名称 Throw描述
NullPointerException 如果 when 为空

after

public boolean after(Date when)

测试此日期是否在指定日期之后。

参数:

参数名称 参数描述
when 一个日期。

返回:

当且仅当此 Date 对象表示的时刻严格晚于 when 表示的时刻时才为 true; 否则为 false。

Throws:

Throw名称 Throw描述
NullPointerException 如果 when 为空

equals

public boolean equals(Object obj)

比较两个日期是否相等。 当且仅当参数不为 null 并且是表示与此对象相同的时间点(精确到毫秒)的 Date 对象时,结果才为真。

因此,当且仅当 getTime 方法为两者返回相同的 long 值时,两个 Date 对象才相等。

覆盖:

类 Object 中的等于

参数:

参数名称 参数描述
obj 比较的对象。

返回:

如果对象相同,则为 true; 否则为 false。

compareTo

public int compareTo(Date anotherDate)

比较两个订购日期。

指定者:

接口 ComparableDate 中的 compareTo

参数:

参数名称 参数描述
anotherDate 要比较的日期。

返回:

如果参数 Date 等于此 Date,则值为 0; 如果此 Date 在 Date 参数之前,则值小于 0; 如果此 Date 在 Date 参数之后,则值大于 0。

Throws:

Throw名称 Throw描述
NullPointerException 如果另一个日期为空。

hashCode

public int hashCode()

返回此对象的哈希码值。 结果是 Date#getTime 方法返回的原始 long 值的两半的异或。 也就是说,哈希码是表达式的值:

 (int)(this.getTime()^(this.getTime() >>> 32)) 

覆盖:

类 Object 中的 hashCode

返回:

此对象的哈希码值。

toString

public String toString()

将此 Date 对象转换为以下形式的字符串:

 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 是年份,四位小数。

覆盖:

类 Object 中的 toString

返回:

此日期的字符串表示形式。

toLocaleString

@Deprecated public String toLocaleString()

已弃用。 从 JDK 1.1 版开始,由 DateFormat.format(Date date) 取代。

以与实现相关的形式创建此 Date 对象的字符串表示形式。 目的是使 Java 应用程序的用户应该熟悉该表单,无论它碰巧在哪里运行。 其意图类似于 ISO C 的 strftime() 函数支持的“%c”格式。

返回:

此日期的字符串表示形式,使用语言环境约定。

toGMTString

@Deprecated public String toGMTString()

已弃用。 从 JDK 版本 1.1 开始,使用 GMT 时区替换为 DateFormat.format(Date date)。

创建此 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”。

结果不取决于本地时区。

返回:

此日期的字符串表示形式,使用 Internet GMT 约定。

getTimezoneOffset

@Deprecated public int getTimezoneOffset()

已弃用。 从 JDK 版本 1.1 开始,替换为 -(Calendar.get(Calendar.ZONE_OFFSET) + Calendar.get(Calendar.DST_OFFSET)) / (60 * 1000)。

返回相对于 UTC 的本地时区的偏移量(以分钟为单位),该偏移量适用于此 Date 对象表示的时间。

例如,在马萨诸塞州格林威治以西的五个时区:

 new Date(96, 1, 14).getTimezoneOffset() returns 300

因为在 1996 年 2 月 14 日,使用的是标准时间(Eastern Standard Time),与 UTC 相差 5 小时; 但:

 new Date(96, 5, 1).getTimezoneOffset() returns 240

因为在 1996 年 6 月 1 日,正在使用夏令时(东部夏令时间),与 UTC 仅相差四个小时。

此方法产生的结果与计算结果相同:

 (this.getTime() - UTC(this.getYear(),
                       this.getMonth(),
                       this.getDate(),
                       this.getHours(),
                       this.getMinutes(),
                       this.getSeconds())) / (60 * 1000)

返回:

当前时区的时区偏移量,以分钟为单位。

from

public static Date from(Instant instant)

从 Instant 对象获取 Date 的实例。

Instant 使用纳秒的精度,而 Date 使用毫秒的精度。 转换将转换任何多余的精度信息,就好像以纳秒为单位的数量被整数除以一百万一样。

Instant 可以将点存储在时间线上更远的未来和更远的过去,而不是 Date。 在这种情况下,此方法将引发异常。

参数:

参数名称 参数描述
instant 转换的瞬间

返回:

表示时间线上与提供的瞬间相同的点的日期

Throws:

Throw名称 Throw描述
NullPointerException 如果 instant 为空。
IllegalArgumentException 如果 instant 太大而无法表示为日期

toInstant

public Instant toInstant()

将此 Date 对象转换为 Instant。

转换会创建一个 Instant,它表示时间线上与此日期相同的点。

返回:

表示时间线上与此 Date 对象相同的点的瞬间