鸿蒙OS开发文档 鸿蒙OS Date

2024-02-25 开发教程 鸿蒙OS开发文档 匿名 1

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) 取代。

方法总结

修饰符和类型方法描述
booleanafter(Date when)测试此日期是否在指定日期之后。
booleanbefore(Date when)测试此日期是否早于指定日期。
Objectclone()返回此对象的副本。
intcompareTo(Date anotherDate)比较两个订购日期。
booleanequals(Object obj)比较两个日期是否相等。
static Datefrom(Instant instant)从 Instant 对象获取 Date 的实例。
intgetDate()已弃用。 从 JDK 版本 1.1 开始,由 Calendar.get(Calendar.DAY_OF_MONTH) 取代。
intgetDay()已弃用。 从 JDK 1.1 版开始,由 Calendar.get(Calendar.DAY_OF_WEEK) 取代。
intgetHours()已弃用。 从 JDK 1.1 版开始,由 Calendar.get(Calendar.HOUR_OF_DAY) 取代。
intgetMinutes()已弃用。 从 JDK 版本 1.1 开始,由 Calendar.get(Calendar.MINUTE) 取代。
intgetMonth()已弃用。 从 JDK 1.1 版开始,由 Calendar.get(Calendar.MONTH) 取代。
intgetSeconds()已弃用。 从 JDK 1.1 版开始,由 Calendar.get(Calendar.SECOND) 取代。
longgetTime()返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
intgetTimezoneOffset()已弃用。 从 JDK 版本 1.1 开始,替换为 -(Calendar.get(Calendar.ZONE_OFFSET) + Calendar.get(Calendar.DST_OFFSET)) / (60 * 1000)。
intgetYear()已弃用。 从 JDK 1.1 版开始,由 Calendar.get(Calendar.YEAR) - 1900 取代。
inthashCode()返回此对象的哈希码值。
static longparse(String s)已弃用。 从 JDK 1.1 版开始,由 DateFormat.parse(String s) 取代。
voidsetDate(int date)已弃用。 从 JDK 1.1 版开始,由 Calendar.set(Calendar.DAY_OF_MONTH, int date) 取代。
voidsetHours(int hours)已弃用。 从 JDK 1.1 版开始,由 Calendar.set(Calendar.HOUR_OF_DAY, int hours) 取代。
voidsetMinutes(int minutes)已弃用。 从 JDK 版本 1.1 开始,由 Calendar.set(Calendar.MINUTE, int minutes) 取代。
voidsetMonth(int month)已弃用。 从 JDK 版本 1.1 开始,由 Calendar.set(Calendar.MONTH, int month) 取代。
voidsetSeconds(int seconds)已弃用。 从 JDK 1.1 版开始,由 Calendar.set(Calendar.SECOND, int seconds) 取代。
voidsetTime(long time)将此 Date 对象设置为表示 1970 年 1 月 1 日 00:00:00 GMT 之后的时间毫秒的时间点。
voidsetYear(int year)已弃用。 从 JDK 版本 1.1 开始,由 Calendar.set(Calendar.YEAR, year + 1900) 取代。
StringtoGMTString()已弃用。 从 JDK 版本 1.1 开始,使用 GMT 时区替换为 DateFormat.format(Date date)。
InstanttoInstant()将此 Date 对象转换为 Instant。
StringtoLocaleString()已弃用。 从 JDK 1.1 版开始,由 DateFormat.format(Date date) 取代。
StringtoString()将此 Date 对象转换为以下形式的字符串:
static longUTC(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。
month0-11 之间的月份。
date1-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。
month0-11 之间的月份。
date1-31 之间的一个月中的一天。
hrs0-23 之间的时间。
min0-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。
month0-11 之间的月份。
date1-31 之间的一个月中的一天。
hrs0-23 之间的时间。
min0-59 之间的分钟数。
sec0-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。
month0-11 之间的月份。
date1-31 之间的一个月中的一天。
hrs0-23 之间的时间。
min0-59 之间的分钟数。
sec0-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 天。

参数:

参数名称参数描述
month0-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 天。

参数:

参数名称参数描述
date1-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 对象相同的点的瞬间