public class Date
extends Object
implements Serializable, Cloneable, Comparable<Date>
java.lang.Object | |
↳ | java.util.Date |
Known Direct Subclasses |
类 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
类的所有方法中,使用以下表示法:
- 1900
. 在所有情况下,为这些目的而提供的方法都不需要在指定的范围内; 例如,日期可以被指定为1月32日,并且被解释为意味着2月1日。
也可以看看:
Public constructors |
|
---|---|
Date() 分配一个 |
|
Date(long date) 分配一个 |
|
Date(int year, int month, int date) 此构造函数在API级别1中已弃用。从JDK版本1.1开始,替换为 |
|
Date(int year, int month, int date, int hrs, int min) 此构造函数在API级别1中已弃用。从JDK版本1.1开始,替换为 |
|
Date(int year, int month, int date, int hrs, int min, int sec) 此构造函数在API级别1中已弃用。从JDK版本1.1开始,替换为 |
|
Date(String s) 此构造函数在API级别1中已弃用。从JDK 1.1版开始,替换为 |
Public methods |
|
---|---|
static long |
UTC(int year, int month, int date, int hrs, int min, int sec) 此方法在API级别1中已弃用。从JDK 1.1版开始,替换为 |
boolean |
after(Date when) 测试此日期是否在指定日期之后。 |
boolean |
before(Date when) 测试此日期是否在指定日期之前。 |
Object |
clone() 返回此对象的副本。 |
int |
compareTo(Date anotherDate) 比较两个日期进行排序。 |
boolean |
equals(Object obj) 比较两个平等的日期。 |
int |
getDate() 此方法在API级别1中已弃用。从JDK版本1.1开始,替换为 |
int |
getDay() 此方法在API级别1中已弃用。从JDK版本1.1开始,替换为 |
int |
getHours() 此方法在API级别1中已弃用。从JDK 1.1版开始,替换为 |
int |
getMinutes() 此方法在API级别1中已弃用。从JDK版本1.1开始,替换为 |
int |
getMonth() 此方法在API级别1中已弃用。从JDK版本1.1开始,替换为 |
int |
getSeconds() 此方法在API级别1中已弃用。从JDK 1.1版开始,替换为 |
long |
getTime() 返回自此19 7015年1月1日00:00:00格林尼治标准时间起的毫秒数,由此 Date对象表示。 |
int |
getTimezoneOffset() 此方法在API级别1中已弃用。从JDK版本1.1开始,替换为 |
int |
getYear() 此方法在API级别1中已弃用。从JDK版本1.1开始,替换为 |
int |
hashCode() 返回此对象的哈希码值。 |
static long |
parse(String s) 此方法在API级别1中已弃用。从JDK版本1.1开始,替换为 |
void |
setDate(int date) 此方法在API级别1中已弃用。从JDK版本1.1开始,替换为 |
void |
setHours(int hours) 此方法在API级别1中已弃用。从JDK版本1.1开始,替换为 |
void |
setMinutes(int minutes) 此方法在API级别1中已弃用。从JDK版本1.1开始,替换为 |
void |
setMonth(int month) 此方法在API级别1中已弃用。从JDK版本1.1开始,替换为 |
void |
setSeconds(int seconds) 此方法在API级别1中已弃用。从JDK版本1.1开始,替换为 |
void |
setTime(long time) 设置此 |
void |
setYear(int year) 此方法在API级别1中已弃用。从JDK版本1.1开始,替换为 |
String |
toGMTString() 此方法在API级别1中已弃用。从JDK版本1.1 |
String |
toLocaleString() 此方法在API级别1中已弃用。从JDK版本1.1开始,替换为 |
String |
toString() 将此 where:dow mon dd hh:mm:ss zzz yyyy
|
Inherited methods |
|
---|---|
From class java.lang.Object
|
|
From interface java.lang.Comparable
|
Date (long date)
分配 Date
对象并将其初始化为自标准基准时间(即“时代”)(即1970年1月1日00:00:00 GMT)以来的指定毫秒数。
Parameters | |
---|---|
date |
long : the milliseconds since January 1, 1970, 00:00:00 GMT. |
也可以看看:
Date (int year, int month, int date)
此构造函数在API级别1中已弃用。
从JDK版本1.1开始,由Calendar.set(year + 1900, month, date)
或GregorianCalendar(year + 1900, month, date)
取代。
分配一个 Date
对象,并初始化它,这样它代表午夜,本地时间,在由指定的一天的开始 year
, month
,并 date
参数。
Parameters | |
---|---|
year |
int : the year minus 1900. |
month |
int : the month between 0-11. |
date |
int : the day of the month between 1-31. |
也可以看看:
Date (int year, int month, int date, int hrs, int min)
此构造函数在API级别1中已弃用。
从JDK版本1.1开始,由Calendar.set(year + 1900, month, date, hrs, min)
或GregorianCalendar(year + 1900, month, date, hrs, min)
取代。
分配一个 Date
对象,并初始化它,这样它代表的由指定的分钟的开始瞬间 year
, month
, date
, hrs
,并 min
参数,在本地时区。
Parameters | |
---|---|
year |
int : the year minus 1900. |
month |
int : the month between 0-11. |
date |
int : the day of the month between 1-31. |
hrs |
int : the hours between 0-23. |
min |
int : the minutes between 0-59. |
也可以看看:
Date (int year, int month, int date, int hrs, int min, int sec)
此构造函数在API级别1中已弃用。
从JDK版本1.1开始,由Calendar.set(year + 1900, month, date, hrs, min, sec)
或GregorianCalendar(year + 1900, month, date, hrs, min, sec)
取代。
分配一个 Date
对象,并初始化它,这样它代表的由指定的第二个开始的瞬间 year
, month
, date
, hrs
, min
,并 sec
参数,在本地时区。
Parameters | |
---|---|
year |
int : the year minus 1900. |
month |
int : the month between 0-11. |
date |
int : the day of the month between 1-31. |
hrs |
int : the hours between 0-23. |
min |
int : the minutes between 0-59. |
sec |
int : the seconds between 0-59. |
也可以看看:
Date (String s)
此构造函数在API级别1中已弃用。
从JDK版本1.1开始,由DateFormat.parse(String s)
取代。
分配一个 Date
对象并对其进行初始化,以便它表示由 s
字符串指示的日期和时间,这可以通过 parse(String)
方法进行解释。
Parameters | |
---|---|
s |
String : a string representation of the date. |
long UTC (int year, int month, int date, int hrs, int min, int sec)
此方法在API级别1中已弃用。
从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()
。
根据参数确定日期和时间。 这些参数被解释为一个月,一个月,一天中的某一天,一小时中的一小时,一小时内的分钟以及第二分钟内的内容,除了参数是相对于UTC解释的外,与具有六个参数的Date构造函数完全相同而不是当地时区。 指示的时间返回,表示为从时间(1970年1月1日的格林威治标准时间00:00:00)开始以毫秒为单位的距离。
Parameters | |
---|---|
year |
int : the year minus 1900. |
month |
int : the month between 0-11. |
date |
int : the day of the month between 1-31. |
hrs |
int : the hours between 0-23. |
min |
int : the minutes between 0-59. |
sec |
int : the seconds between 0-59. |
Returns | |
---|---|
long |
the number of milliseconds since January 1, 1970, 00:00:00 GMT for the date and time specified by the arguments. |
也可以看看:
boolean after (Date when)
测试此日期是否在指定日期之后。
Parameters | |
---|---|
when |
Date : a date. |
Returns | |
---|---|
boolean |
true if and only if the instant represented by this Date object is strictly later than the instant represented by when; false otherwise. |
Throws | |
---|---|
NullPointerException |
if when is null. |
boolean before (Date when)
测试此日期是否在指定日期之前。
Parameters | |
---|---|
when |
Date : a date. |
Returns | |
---|---|
boolean |
true if and only if the instant of time represented by this Date object is strictly earlier than the instant represented by when; false otherwise. |
Throws | |
---|---|
NullPointerException |
if when is null. |
int compareTo (Date anotherDate)
比较两个日期进行排序。
Parameters | |
---|---|
anotherDate |
Date : the Date to be compared. |
Returns | |
---|---|
int |
the value 0 if the argument Date is equal to this Date; a value less than 0 if this Date is before the Date argument; and a value greater than 0 if this Date is after the Date argument. |
Throws | |
---|---|
NullPointerException |
if anotherDate is null. |
boolean equals (Object obj)
比较两个平等的日期。 结果是true
当且仅当参数不是null
并且是一个Date
对象,该对象表示与该对象相同的时间点(以毫秒为单位)。
因此,当且仅当 getTime
方法为两者返回相同的 long
值时,两个 Date
对象相等。
Parameters | |
---|---|
obj |
Object : the object to compare with. |
Returns | |
---|---|
boolean |
true if the objects are the same; false otherwise. |
也可以看看:
int getDate ()
此方法在API级别1中已弃用。
从JDK版本1.1开始,由Calendar.get(Calendar.DAY_OF_MONTH)
取代。
返回此Date对象表示的月份中的某一天。 返回的值在1
和31
之间,表示包含或开始于此Date对象所表示的时间的月份的当日,如本地时区中所解释的。
Returns | |
---|---|
int |
the day of the month represented by this date. |
也可以看看:
int getDay ()
此方法在API级别1中已弃用。
从JDK版本1.1开始,由Calendar.get(Calendar.DAY_OF_WEEK)
取代。
返回此日期所代表的星期几。 返回的值( 0 =星期日, 1 =星期一, 2 =星期二, 3 =星期三, 4 =星期四, 5 =星期五, 6 =星期六)代表包含该时间点或以该时间点开始的星期几Date对象,如当地时区中的解释。
Returns | |
---|---|
int |
the day of the week represented by this date. |
也可以看看:
int getHours ()
此方法在API级别1中已弃用。
从JDK版本1.1开始,由Calendar.get(Calendar.HOUR_OF_DAY)
取代。
返回此Date对象表示的小时数 。 返回的值是一个数字( 0到23 ),表示一天中包含或开始于此Date对象表示的时间的小时 ,如本地时区中所解释的。
Returns | |
---|---|
int |
the hour represented by this date. |
也可以看看:
int getMinutes ()
此方法在API级别1中已弃用。
从JDK版本1.1开始,由Calendar.get(Calendar.MINUTE)
取代。
返回此日期所表示的小时数,如本地时区中所解释的那样。 返回的值在0
和59
之间。
Returns | |
---|---|
int |
the number of minutes past the hour represented by this date. |
也可以看看:
int getMonth ()
此方法在API级别1中已弃用。
从JDK版本1.1开始,由Calendar.get(Calendar.MONTH)
取代。
返回一个数字,表示包含此对象所表示的时间的月份或以此对象开始的月份。 返回值在0
和11
之间,值0
代表1月份。
Returns | |
---|---|
int |
the month represented by this date. |
也可以看看:
int getSeconds ()
此方法在API级别1中已弃用。
从JDK版本1.1开始,由Calendar.get(Calendar.SECOND)
取代。
返回此日期前一分钟的秒数。 返回的值在0
和61
之间。 值60
和61
只能在考虑闰秒的那些Java虚拟机上进行。
Returns | |
---|---|
int |
the number of seconds past the minute represented by this date. |
也可以看看:
long getTime ()
返回此 Date对象表示的自1970年1月1日00:00:00 GMT以来的毫秒数。
Returns | |
---|---|
long |
the number of milliseconds since January 1, 1970, 00:00:00 GMT represented by this date. |
int getTimezoneOffset ()
此方法在API级别1中已弃用。
从JDK版本1.1开始,由-(Calendar.get(Calendar.ZONE_OFFSET) + Calendar.get(Calendar.DST_OFFSET)) / (60 * 1000)
取代。
以分钟为单位返回本地时区相对于UTC的偏移量,此时间适合此 Date
对象表示的时间。
例如,在马萨诸塞州,格林威治西部的五个时区:
because on February 14, 1996, standard time (Eastern Standard Time) is in use, which is offset five hours from UTC; but:new Date(96, 1, 14).getTimezoneOffset() returns 300
because on June 1, 1996, daylight saving time (Eastern Daylight Time) is in use, which is offset only four hours from UTC.new Date(96, 5, 1).getTimezoneOffset() returns 240
该方法产生与计算结果相同的结果:
(this.getTime() - UTC(this.getYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds())) / (60 * 1000)
Returns | |
---|---|
int |
the time-zone offset, in minutes, for the current time zone. |
也可以看看:
int getYear ()
此方法在API级别1中已弃用。
从JDK版本1.1开始,由Calendar.get(Calendar.YEAR) - 1900
取代。
返回一个值,该值是从包含该对象的年份中减去1900或从本地时区中解释的 Date
对象所表示的即时时刻开始的结果。
Returns | |
---|---|
int |
the year represented by this date, minus 1900. |
也可以看看:
int hashCode ()
返回此对象的哈希码值。 结果是排他性由返回原始long值的两个半部的OR getTime()
方法。 也就是说,哈希码是表达式的值:
(int)(this.getTime()^(this.getTime() >>> 32))
Returns | |
---|---|
int |
a hash code value for this object. |
long parse (String s)
此方法在API级别1中已弃用。
从JDK版本1.1开始,由DateFormat.parse(String s)
取代。
尝试将字符串s解释为日期和时间的表示形式。 如果尝试成功,则返回的时间被表示为距时间(1970年1月1日的格林威治标准时间00:00:00)以毫秒为单位的距离,以毫秒为单位。 如果尝试失败,则抛出IllegalArgumentException 。
它接受许多语法; 特别是它承认IETF标准日期语法:“星期六,1995年8月12日13:30:00 GMT”。 它还了解美国大陆的时区缩写,但对于一般用途,应使用时区偏移:“星期六,1995年8月12日13:30:00 GMT + 0430”(格林威治以西4小时30分钟子午线)。 如果未指定时区,则假定为本地时区。 GMT和UTC被认为是等同的。
字符串s从左到右进行处理,查找感兴趣的数据。 在s中的任何材料在ASCII括号字符(和)中被忽略。 括号可以嵌套。 否则,在s内允许的唯一字符是这些ASCII字符:
and whitespace characters.abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789,+-:/
连续的十进制数字序列被视为十进制数字:
SimpleDateFormat
. 连续的字母序列被认为是一个字,并按如下处理:
一旦整个字符串s被扫描完毕,它就会以两种方式之一转换为时间结果。 如果已识别时区或时区偏移量,则以UTC为单位解释年,月,日,月,小时,分钟和秒,然后应用时区偏移量。 否则,在本地时区中解释年,月,日,月,小时,分钟和秒钟。
Parameters | |
---|---|
s |
String : a string to be parsed as a date. |
Returns | |
---|---|
long |
the number of milliseconds since January 1, 1970, 00:00:00 GMT represented by the string argument. |
也可以看看:
void setDate (int date)
此方法在API级别1中已弃用。
从JDK版本1.1开始,由Calendar.set(Calendar.DAY_OF_MONTH, int date)
取代。
将此Date对象的月份中的某一天设置为指定值。 这个Date对象被修改,以便它表示在该月的指定日期内的时间点,其中年,月,小时,分钟和秒与以前相同,如本地时区中所解释的。 例如,如果日期是4月30日,日期设置为31,那么它将被视为在5月1日,因为4月只有30天。
Parameters | |
---|---|
date |
int : the day of the month value between 1-31. |
也可以看看:
void setHours (int hours)
此方法在API级别1中已弃用。
从JDK版本1.1开始,由Calendar.set(Calendar.HOUR_OF_DAY, int hours)
取代。
将此Date对象的小时数设置为指定值。 这个Date对象被修改,以便它代表一天中指定时间内的时间点,年,月,日,分和秒与以前相同,如本地时区中所解释的。
Parameters | |
---|---|
hours |
int : the hour value. |
也可以看看:
void setMinutes (int minutes)
此方法在API级别1中已弃用。
从JDK版本1.1开始,由Calendar.set(Calendar.MINUTE, int minutes)
取代。
将此Date对象的分钟数设置为指定的值。 这个Date对象被修改,以便它表示在指定的分钟内的时间点,其中年,月,日,小时和秒与以前相同,如本地时区中所解释的。
Parameters | |
---|---|
minutes |
int : the value of the minutes. |
也可以看看:
void setMonth (int month)
此方法在API级别1中已弃用。
从JDK版本1.1开始,由Calendar.set(Calendar.MONTH, int month)
取代。
将此日期的月份设置为指定的值。 此Date对象被修改,以便它表示指定月份内的时间点,其中年,日,小时,分钟和秒与以前相同,如本地时区中所解释的。 例如,如果日期是10月31日,并且月份设置为6月,则新日期将被视为在7月1日,因为6月只有30天。
Parameters | |
---|---|
month |
int : the month value between 0-11. |
也可以看看:
void setSeconds (int seconds)
此方法在API级别1中已弃用。
从JDK版本1.1开始,由Calendar.set(Calendar.SECOND, int seconds)
取代。
将此Date的秒数设置为指定值。 这个Date对象被修改,以便它代表在一分钟的指定秒钟内的一个时间点,年,月,日,小时和分钟与以前相同,如本地时区中所解释的。
Parameters | |
---|---|
seconds |
int : the seconds value. |
也可以看看:
void setTime (long time)
设置此 Date
对象以表示1970年1月1日00:00:00 GMT之后 time
毫秒的时间点。
Parameters | |
---|---|
time |
long : the number of milliseconds. |
void setYear (int year)
此方法在API级别1中已弃用。
从JDK版本1.1开始,由Calendar.set(Calendar.YEAR, year + 1900)
取代。
将此Date对象的年份设置为指定值加1900.此Date
对象被修改,以便它表示指定年份内的一个时间点,月份,日期,小时,分钟和秒与以前相同,如当地时区的解释。 (当然,例如,如果日期是2月29日,并且年份设置为非闰年,那么新日期将被视为如同3月1日那样。)
Parameters | |
---|---|
year |
int : the year value. |
也可以看看:
String toGMTString ()
此方法在API级别1中已弃用。
从JDK版本1.1 DateFormat.format(Date date)
,使用GMT TimeZone
替换为TimeZone
。
创建表单的这个Date对象的字符串表示形式:
d mon yyyy hh:mm:ss GMT其中:
结果不取决于当地时区。
Returns | |
---|---|
String |
a string representation of this date, using the Internet GMT conventions. |
也可以看看:
String toLocaleString ()
此方法在API级别1中已弃用。
从JDK版本1.1开始,由DateFormat.format(Date date)
取代。
以与实现相关的形式创建此Date对象的字符串表示形式。 目的是表单应该对Java应用程序的用户来说很熟悉,无论它在哪里运行。 意图与ISO C的strftime()
功能所支持的“ %c
”格式strftime()
。
Returns | |
---|---|
String |
a string representation of this date, using the locale conventions. |
也可以看看:
String toString ()
将此 Date
对象转换为以下形式的 String
:
where:dow mon dd hh:mm:ss zzz yyyy
Returns | |
---|---|
String |
a string representation of this date. |
也可以看看: