模块 java.base
 java.util

类 Date

java.lang.Object
java.util.Date
所有已实现的接口:
Serializable , Cloneable , Comparable<Date>
已知子类:
Date , Time , Timestamp

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 同步,但not调整闰秒。一个有趣的进一步信息来源是美国海军天文台 (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
参见:
  • 构造方法总结

    构造方法
    构造方法
    描述
    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)以来指定的毫秒数。
    已弃用。
    从 JDK 1.1 版开始,由 DateFormat.parse(String s) 取代。
  • 方法总结

    修饰符和类型
    方法
    描述
    boolean
    after(Date when)
    测试此日期是否在指定日期之后。
    boolean
    before(Date when)
    测试此日期是否早于指定日期。
    返回此对象的副本。
    int
    compareTo(Date anotherDate)
    比较两个日期以进行排序。
    boolean
    equals(Object obj)
    比较两个日期是否相等。
    static Date
    from(Instant instant)
    Instant 对象获取 Date 的实例。
    int
    已弃用。
    从 JDK 1.1 版开始,由 Calendar.get(Calendar.DAY_OF_MONTH) 取代。
    int
    已弃用。
    从 JDK 1.1 版开始,由 Calendar.get(Calendar.DAY_OF_WEEK) 取代。
    int
    已弃用。
    从 JDK 1.1 版开始,由 Calendar.get(Calendar.HOUR_OF_DAY) 取代。
    int
    已弃用。
    从 JDK 1.1 版开始,由 Calendar.get(Calendar.MINUTE) 取代。
    int
    已弃用。
    从 JDK 1.1 版开始,由 Calendar.get(Calendar.MONTH) 取代。
    int
    已弃用。
    从 JDK 1.1 版开始,由 Calendar.get(Calendar.SECOND) 取代。
    long
    返回此 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
    已弃用。
    从 JDK 1.1 版开始,由 Calendar.get(Calendar.YEAR) - 1900 取代。
    int
    返回此对象的哈希码值。
    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 后 time 毫秒的时间点。
    void
    setYear(int year)
    已弃用。
    从 JDK 1.1 版开始,由 Calendar.set(Calendar.YEAR, year + 1900) 取代。
    已弃用。
    从 JDK 1.1 版开始,由 DateFormat.format(Date date) 取代,使用 GMT TimeZone
    将此 Date 对象转换为 Instant
    已弃用。
    从 JDK 1.1 版开始,由 DateFormat.format(Date date) 取代。
    将此 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()

    在类 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)以来指定的毫秒数。
      参数:
      date - 自格林威治标准时间 1970 年 1 月 1 日 00:00:00 以来的毫秒数。
      参见:
    • 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 对象并对其进行初始化,使其代表 yearmonthdate 参数指定的一天开始时的午夜、当地时间。
      参数:
      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 对象并对其进行初始化,使其代表本地时区中 yearmonthdatehrsmin 参数指定的分钟开始时刻。
      参数:
      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 对象并对其进行初始化,使其代表本地时区中 yearmonthdatehrsminsec 参数指定的第二个开始时刻。
      参数:
      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 指示的日期和时间,该字符串被 parse(java.lang.String) 方法解释。
      参数:
      s - 日期的字符串表示形式。
      参见:
  • 方法详情

    • clone

      public Object  clone()
      返回此对象的副本。
      重写:
      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 TimeZone,后跟 Calendar.getTime().getTime()
      根据参数确定日期和时间。参数被解释为年、月、月中的某天、一天中的小时、小时中的分钟和分钟中的秒,与具有六个参数的 Date 构造函数完全相同,除了参数是相对于 UTC 解释的而不是本地时区。返回的指示时间表示为该时间距纪元(1970 年 1 月 1 日格林威治标准时间 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 public static long parse(String  s)
      已弃用。
      从 JDK 1.1 版开始,由 DateFormat.parse(String s) 取代。
      尝试将字符串 s 解释为日期和时间的表示。如果尝试成功,则返回指示的时间,表示该时间与纪元(1970 年 1 月 1 日格林威治标准时间 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 表示“格林威治以东四小时三十分钟”。允许字符串冗余指定 GMTUTUTC - 例如, GMT-5utc+0430
      • 如果满足以下条件之一,则该数字被视为年份数字:
        • 数字等于或大于 70,后跟空格、逗号、斜杠或字符串结尾
        • 数量小于70,月份和日期都已经被识别
        如果识别的年份数小于 100,则将其解释为相对于世纪的缩写年份,其日期在 Date 类初始化时间之前的 80 年和之后的 19 年之内。调整年份数字后,从中减去 1900。例如,如果当前年份是 1999,则假设 19 到 99 范围内的年份表示 1919 到 1999,而假设 0 到 18 之间的年份表示 2000 到 2018。请注意,这与年份的解释略有不同SimpleDateFormat 中使用的少于 100 个。
      • 如果数字后跟一个冒号,则将其视为一个小时,除非已经识别出一个小时,在这种情况下,它将被视为一分钟。
      • 如果数字后跟斜杠,则视为月份(减 1 以产生 011 范围内的数字),除非月份已经被识别,在这种情况下它被视为一天月的。
      • 如果数字后跟空格、逗号、连字符或字符串结尾,则如果已识别小时但未识别分钟,则将其视为分钟;否则,如果识别了分钟但没有识别秒,则将其视为秒;否则,它被视为一个月中的一天。

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

      • 忽略大小写匹配 AM 的单词将被忽略(但如果小时未被识别或小于 1 或大于 12 则解析失败)。
      • 匹配 PM 的单词忽略大小写,将 12 添加到小时(但如果小时未被识别或小于 1 或大于 12 则解析失败)。
      • 任何与 SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAYSATURDAY 的任何前缀匹配且忽略大小写的单词都将被忽略。例如,sat, Friday, TUEThurs 将被忽略。
      • 否则,任何与 JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBERDECEMBER 的任何前缀匹配的单词,忽略大小写,并按照此处给出的顺序考虑它们,将被识别为指定月份并转换为数字(011 )。例如,aug, Sept, aprilNOV 被识别为月份。 Ma 也是如此,它被识别为 MARCH,而不是 MAY
      • 任何匹配 GMT, UTUTC 的单词,忽略大小写,都被视为引用 UTC。
      • 任何与 EST, CST, MSTPST 匹配且忽略大小写的单词都被识别为指的是北美的时区,分别位于格林威治以西五小时、六小时、七小时或八小时。在夏令时期间,任何匹配 EDT, CDT, MDTPDT 且忽略大小写的单词都被识别为分别指代同一时区。

      一旦扫描了整个字符串 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 对象表示的即时时刻或以此即时开始的月份。返回值介于 011 之间,值 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 对象表示的月份中的第几天。返回的值介于 131 之间,表示包含或开始于此 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 = Sunday, 1 = Monday, 2 = Tuesday, 3 = Wednesday, 4 = Thursday, 5 = Friday, 6 = Saturday)表示一周中的第几天包含或开始于这个时刻Date 对象,在当地时区解释。
      返回:
      此日期表示的星期几。
      参见:
    • getHours

      @Deprecated public int getHours()
      已弃用。
      从 JDK 1.1 版开始,由 Calendar.get(Calendar.HOUR_OF_DAY) 取代。
      返回此 Date 对象表示的小时。返回值是一个数字(023),代表一天中的小时,该小时包含此 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) 取代。
      返回此日期表示的小时后的分钟数,按当地时区解释。返回的值介于 059 之间。
      返回:
      此日期表示的小时后的分钟数。
      参见:
    • 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) 取代。
      返回此日期表示的分钟后的秒数。返回的值介于 061 之间。值 6061 只能出现在那些考虑闰秒的 Java 虚拟机上。
      返回:
      此日期表示的分钟后的秒数。
      参见:
    • setSeconds

      @Deprecated public void setSeconds(int seconds)
      已弃用。
      从 JDK 1.1 版开始,由 Calendar.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 后 time 毫秒的时间点。
      参数:
      time - 毫秒数。
    • before

      public boolean before(Date  when)
      测试此日期是否早于指定日期。
      参数:
      when - 约会对象。
      返回:
      true 当且仅当此 Date 对象表示的时刻严格早于 when 表示的时刻; false否则。
      抛出:
      NullPointerException - 如果 when 为空。
    • after

      public boolean after(Date  when)
      测试此日期是否在指定日期之后。
      参数:
      when - 约会对象。
      返回:
      true 当且仅当此 Date 对象表示的时刻严格晚于 when 表示的时刻; false否则。
      抛出:
      NullPointerException - 如果 when 为空。
    • equals

      public boolean equals(Object  obj)
      比较两个日期是否相等。结果是 true 当且仅当参数不是 null 并且是一个 Date 对象表示相同的时间点,精确到毫秒,作为这个对象。

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

      重写:
      equals 在类 Object
      参数:
      obj - 要与之比较的对象。
      返回:
      true 如果对象相同; false否则。
      参见:
    • compareTo

      public int compareTo(Date  anotherDate)
      比较两个日期以进行排序。
      指定者:
      compareTo 在接口 Comparable<Date>
      参数:
      anotherDate - 要比较的 Date
      返回:
      如果参数 Date 等于此 Date,则值为 0;如果此日期在日期参数之前,则小于 0 的值;如果此日期在日期参数之后,则值大于 0
      抛出:
      NullPointerException - 如果 anotherDate 为空。
      自从:
      1.2
    • hashCode

      public int hashCode()
      返回此对象的哈希码值。结果是 getTime() 方法返回的原始 long 值的两半的异或。也就是说,哈希码是表达式的值:
      
       (int)(this.getTime()^(this.getTime() >>> 32))
        
      重写:
      hashCode 在类 Object
      返回:
      此对象的哈希码值。
      参见:
    • toString

      public String  toString()
      将此 Date 对象转换为以下形式的 String
       dow mon dd hh:mm:ss zzz yyyy
      在哪里:
      • dow 是星期几 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。
      • mon 是月份 (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec)。
      • dd 是一个月中的第几天(0131 ),以两位小数表示。
      • hh 是一天中的小时(0023 ),为两位小数。
      • mm 是小时内的分钟数(0059 ),为两位小数。
      • ss 是分钟内的秒数(0061 ,两位小数。
      • zzz 是时区(可能反映夏令时)。标准时区缩写包括方法 parse 识别的缩写。如果时区信息不可用,则 zzz 为空 - 也就是说,它根本不包含任何字符。
      • yyyy 是年份,四位十进制数字。
      重写:
      toString 在类 Object
      返回:
      此日期的字符串表示形式。
      参见:
    • toLocaleString

      @Deprecated public String  toLocaleString()
      已弃用。
      从 JDK 1.1 版开始,由 DateFormat.format(Date date) 取代。
      以依赖于实现的形式创建此 Date 对象的字符串表示形式。这样做的目的是让 Java 应用程序的用户熟悉该表单,无论它在何处运行。其意图类似于 ISO C 的 strftime() 函数支持的“%c”格式。
      返回:
      此日期的字符串表示形式,使用locale约定。
      参见:
    • toGMTString

      @Deprecated public String  toGMTString()
      已弃用。
      从 JDK 1.1 版开始,由 DateFormat.format(Date date) 取代,使用 GMT TimeZone
      创建此 Date 对象的字符串表示形式:
       d mon yyyy hh:mm:ss GMT
      在哪里:
      • d是一个月中的第几天(131),作为一位或两位小数。
      • 周一是月份 (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec)。
      • yyyy是年份,四位十进制数字。
      • 是一天中的小时(0023 ),以两位小数表示。
      • 毫米是小时内的分钟数(0059 ),以两位小数表示。
      • SS是分钟内的第二个(0061),作为两位小数。
      • 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) 取代。
      返回本地时区相对于适合此 Date 对象表示的时间的 UTC 的偏移量(以分钟为单位)。

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

       new Date(96, 1, 14).getTimezoneOffset() returns 300
      因为在 1996 年 2 月 14 日,使用标准时间(东部标准时间),与 UTC 相差五个小时;但:
       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 - 转换的瞬间
      返回:
      Date 表示时间线上与提供的时刻相同的点
      抛出:
      NullPointerException - 如果 instant 为空。
      IllegalArgumentException - 如果瞬间太大而无法表示为 Date
      自从:
      1.8
    • toInstant

      public Instant  toInstant()
      将此 Date 对象转换为 Instant

      转换创建一个 Instant 代表时间线上与此 Date 相同的点。

      返回:
      代表时间线上与此 Date 对象相同的点的瞬间
      自从:
      1.8