Module java.base
Package java.util

Class 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同步,但不调整闰秒。进一步信息的一个有趣来源是美国海军天文台(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

    Constructors
    Constructor
    Description
    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)替代。
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    after(Date when)
    检查此日期是否在指定日期之后。
    boolean
    before(Date when)
    检查此日期是否在指定日期之前。
    clone()
    返回此对象的副本。
    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
    getDay()
    已弃用。
    从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 GMT以来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()

    Methods declared in class java.lang.Object

    finalize, getClass, notify, notifyAll, wait, wait, wait
  • 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 public Date(int year, int month, int date)
      Deprecated.
      As of JDK version 1.1, replaced by Calendar.set(year + 1900, month, date) or 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)
      Deprecated.
      As of JDK version 1.1, replaced by Calendar.set(year + 1900, month, date, hrs, min) or 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)
      Deprecated.
      As of JDK version 1.1, replaced by Calendar.set(year + 1900, month, date, hrs, min, sec) or 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)
      Deprecated.
      As of JDK version 1.1, replaced by DateFormat.parse(String s).
      分配一个Date对象并初始化,使其表示由字符串s指示的日期和时间,该字符串被解释为parse(java.lang.String)方法所示。
      参数:
      s - 日期的字符串表示形式。
      抛出:
      IllegalArgumentException - 如果s无法解释为日期和时间的表示形式。
      参见:
  • Method Details

    • clone

      public Object clone()
      返回此对象的副本。
      覆盖:
      clone 在类 Object
      返回:
      此实例的克隆。
      参见:
    • UTC

      @Deprecated public static long UTC(int year, int month, int date, int hrs, int min, int sec)
      Deprecated.
      As of JDK version 1.1, replaced by Calendar.set(year + 1900, month, date, hrs, min, sec) or GregorianCalendar(year + 1900, month, date, hrs, min, sec), using a UTC TimeZone, followed by Calendar.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 public static long parse(String s)
      Deprecated.
      As of JDK version 1.1, replaced by DateFormat.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表示“比格林尼治东四小时三十分钟”。允许字符串指定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匹配的任何单词(忽略大小写)将被识别为相对于格林尼治西5、6、7或8小时的北美时区。与EDT, CDT, MDTPDT匹配的任何单词(忽略大小写)将被识别为相同时区的夏令时,分别。

      一旦整个字符串s被扫描,它将以两种方式之一转换为时间结果。如果已识别时区或时区偏移,则年、月、日、小时、分钟和秒将在UTC中解释,然后应用时区偏移。否则,年、月、日、小时、分钟和秒将在本地时区中解释。

      参数:
      s - 要解析为日期的字符串。
      返回:
      由字符串参数表示的自1970年1月1日00:00:00 GMT以来的毫秒数。
      抛出:
      IllegalArgumentException - 如果无法将s解释为日期和时间的表示。
      参见:
    • getYear

      @Deprecated public int getYear()
      Deprecated.
      As of JDK version 1.1, replaced by Calendar.get(Calendar.YEAR) - 1900.
      返回一个值,该值是包含或以此Date对象表示的时间瞬间开始的年份减去1900的结果,解释为本地时区。
      返回:
      此日期表示的年份减去1900。
      参见:
    • setYear

      @Deprecated public void setYear(int year)
      Deprecated.
      As of JDK version 1.1, replaced by Calendar.set(Calendar.YEAR, year + 1900).
      将此Date对象的年份设置为指定值加上1900。修改此Date对象,使其表示指定年份内的某一时刻,月份、日期、小时、分钟和秒与之前相同,解释为本地时区。(当然,如果日期是2月29日,例如,年份设置为非闰年,则新日期将被视为3月1日。)
      参数:
      year - 年份值。
      参见:
    • getMonth

      @Deprecated public int getMonth()
      Deprecated.
      As of JDK version 1.1, replaced by Calendar.get(Calendar.MONTH).
      返回一个数字,表示包含或以此Date对象表示的时间瞬间开始的月份。返回的值在011之间,其中值0表示一月。
      返回:
      此日期表示的月份。
      参见:
    • setMonth

      @Deprecated public void setMonth(int month)
      Deprecated.
      As of JDK version 1.1, replaced by Calendar.set(Calendar.MONTH, int month).
      将此日期的月份设置为指定值。修改此Date对象,使其表示指定月份内的某一时刻,年份、日期、小时、分钟和秒与之前相同,解释为本地时区。例如,如果日期是10月31日,月份设置为6,则新日期将被视为7月1日,因为6月只有30天。
      参数:
      month - 月份值在0-11之间。
      参见:
    • getDate

      @Deprecated public int getDate()
      Deprecated.
      As of JDK version 1.1, replaced by Calendar.get(Calendar.DAY_OF_MONTH).
      返回由此Date对象表示的日期的日期。返回的值在131之间,表示包含或以此Date对象表示的时间瞬间开始的日期,解释为本地时区。
      返回:
      此日期表示的日期。
      参见:
    • setDate

      @Deprecated public void setDate(int date)
      Deprecated.
      As of JDK version 1.1, replaced by 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()
      Deprecated.
      As of JDK version 1.1, replaced by Calendar.get(Calendar.DAY_OF_WEEK).
      返回由此日期表示的星期几。返回的值(0 = 星期日,1 = 星期一,2 = 星期二,3 = 星期三,4 = 星期四,5 = 星期五,6 = 星期六)表示包含或以此Date对象表示的时间瞬间开始的星期几,解释为本地时区。
      返回:
      此日期表示的星期几。
      参见:
    • getHours

      @Deprecated public int getHours()
      Deprecated.
      As of JDK version 1.1, replaced by Calendar.get(Calendar.HOUR_OF_DAY).
      返回由此Date对象表示的小时数。返回的值是一个数字(023),表示包含或以此Date对象表示的时间瞬间开始的一天内的小时,解释为本地时区。
      返回:
      此日期表示的小时。
      参见:
    • setHours

      @Deprecated public void setHours(int hours)
      Deprecated.
      As of JDK version 1.1, replaced by Calendar.set(Calendar.HOUR_OF_DAY, int hours).
      将此Date对象的小时设置为指定值。修改此Date对象,使其表示一天中指定小时的时间点,年、月、日期、分钟和秒与之前相同,按本地时区解释。
      参数:
      hours - 小时值。
      参见:
    • getMinutes

      @Deprecated public int getMinutes()
      Deprecated.
      As of JDK version 1.1, replaced by Calendar.get(Calendar.MINUTE).
      返回此日期表示的小时过去的分钟数,按本地时区解释。返回值介于059之间。
      返回:
      此日期表示的小时过去的分钟数。
      参见:
    • setMinutes

      @Deprecated public void setMinutes(int minutes)
      Deprecated.
      As of JDK version 1.1, replaced by Calendar.set(Calendar.MINUTE, int minutes).
      将此Date对象的分钟设置为指定值。修改此Date对象,使其表示一小时内指定分钟的时间点,年、月、日期、小时和秒与之前相同,按本地时区解释。
      参数:
      minutes - 分钟值。
      参见:
    • getSeconds

      @Deprecated public int getSeconds()
      Deprecated.
      As of JDK version 1.1, replaced by Calendar.get(Calendar.SECOND).
      返回此日期表示的分钟过去的秒数。返回值介于061之间。值6061只会出现在考虑闰秒的Java虚拟机上。
      返回:
      此日期表示的分钟过去的秒数。
      参见:
    • setSeconds

      @Deprecated public void setSeconds(int seconds)
      Deprecated.
      As of JDK version 1.1, replaced by 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 GMT之后time毫秒的时间点。
      参数:
      time - 毫秒数。
    • before

      public boolean before(Date when)
      检查此日期是否早于指定日期。
      参数:
      when - 一个日期。
      返回:
      如果此Date对象表示的时间点严格早于when表示的时间点,则返回true;否则返回false
      抛出:
      NullPointerException - 如果when为null。
    • after

      public boolean after(Date when)
      检查此日期是否晚于指定日期。
      参数:
      when - 一个日期。
      返回:
      如果此Date对象表示的时间点严格晚于when表示的时间点,则返回true;否则返回false
      抛出:
      NullPointerException - 如果when为null。
    • 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;如果此Date在参数Date之前,则返回小于0的值;如果此Date在参数Date之后,则返回大于0的值。
      抛出:
      NullPointerException - 如果anotherDate为null。
      自:
      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是星期几(周日, 周一, 周二, 周三, 周四, 周五, 周六)。
      • mon是月份(一月, 二月, 三月, 四月, 五月, 六月, 七月, 八月, 九月, 十月, 十一月, 十二月)。
      • dd是月份中的日期(0131),以两位十进制数字表示。
      • hh是一天中的小时(0023),以两位十进制数字表示。
      • mm是小时内的分钟(0059),以两位十进制数字表示。
      • ss是分钟内的秒数(0061,以两位十进制数字表示。
      • zzz是时区(可能反映夏令时)。标准时区缩写包括parse方法识别的那些。如果没有可用的时区信息,则zzz为空 - 即,它根本没有字符。
      • yyyy是年份,以四位十进制数字表示。
      覆盖:
      toString 在类 Object
      返回:
      此日期的字符串表示。
      参见:
    • toLocaleString

      @Deprecated public String toLocaleString()
      Deprecated.
      As of JDK version 1.1, replaced by DateFormat.format(Date date).
      创建此Date对象的字符串表示,以实现相关形式。意图是该形式应该对Java应用程序的用户是熟悉的,无论它在何处运行。意图类似于ISO C的strftime()函数支持的"%c"格式。
      返回:
      此日期的字符串表示,使用区域设置约定。
      参见:
    • toGMTString

      @Deprecated public String toGMTString()
      Deprecated.
      As of JDK version 1.1, replaced by DateFormat.format(Date date), using a GMT TimeZone.
      创建此Date对象的字符串表示,形式如下:
       d mon yyyy hh:mm:ss GMT
      其中:
      • d是月份中的日期(131),以一位或两位十进制数字表示。
      • mon是月份(一月, 二月, 三月, 四月, 五月, 六月, 七月, 八月, 九月, 十月, 十一月, 十二月)。
      • yyyy是年份,以四位十进制数字表示。
      • hh是一天中的小时(0023),以两位十进制数字表示。
      • mm是小时内的分钟(0059),以两位十进制数字表示。
      • ss是分钟内的秒数(0061),以两位十进制数字表示。
      • GMT正好是ASCII字符"GMT",表示格林尼治标准时间。

      结果不依赖于本地时区。

      返回:
      此日期的字符串表示,使用互联网GMT约定。
      参见:
    • getTimezoneOffset

      @Deprecated public int 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
      因为在1996年2月14日,使用标准时间(东部标准时间),与UTC相差五个小时;但是:
       new Date(96, 5, 1).getTimezoneOffset() 返回 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为null。
      IllegalArgumentException - 如果瞬时时间过大,无法表示为Date
      自:
      1.8
    • toInstant

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

      转换将创建一个表示与此Date相同时间线上的Instant

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