java.lang.Object java.util.Date
public class 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 同步,但没有 针对闰秒进行调整。有关更多信息的一个有趣来源是美国海军天文台,特别是 Directorate of Time 的网址:
http://tycho.usno.navy.mil
还有它们对 "Systems of Time" 的定义,网址为:
http://tycho.usno.navy.mil/systime.html
在类 Date
所有可以接受或返回年、月、日期、小时、分钟和秒值的方法中,将使用下面的表示形式:
- 1900
表示。 在所有情形中,针对这些目的赋予方法的参数不需要在指定的范围内;例如,可以把日期指定为 1 月 32 日,并把它解释为 2 月 1 日的相同含义。
DateFormat
,
Calendar
,
TimeZone
,
序列化表格
构造方法摘要 | |
---|---|
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 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 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) 比较两个日期的相等性。 |
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 以后 time 毫秒的时间点。 |
void |
setYear(int year) 已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.YEAR, year + 1900) 取代。 |
String |
toGMTString() 已过时。 从 JDK 1.1 开始,由 DateFormat.format(Date date) 取代,使用 GMT TimeZone 。 |
String |
toLocaleString() 已过时。 从 JDK 1.1 开始,由 DateFormat.format(Date date) 取代。 |
String |
toString() 把此 Date 对象转换为以下形式的 String : dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。 |
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 |
构造方法详细信息 |
---|
public Date()
Date
对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
public Date(long date)
Date
对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。
date
- 自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数。
System.currentTimeMillis()
@Deprecated public Date(int year, int month, int date)
Calendar.set(year + 1900, month, date)
或 GregorianCalendar(year + 1900, month, date)
取代。
Date
对象并初始化此对象,以表示由
year
、
month
和
date
参数指定的一天的开始时间(本地时间晚上 12 时)。
year
- 减 1900 的年份。
month
- 0-11 的月份。
date
- 一月中 1-31 之间的某一天。
Calendar
@Deprecated public Date(int year, int month, int date, int hrs, int min)
Calendar.set(year + 1900, month, date, hrs, min)
或 GregorianCalendar(year + 1900, month, date, hrs, min)
取代。
Date
对象并初始化此对象,以表示本地时区中由
year
、
month
、
date
、
hrs
和
min
参数指定的分钟的开始瞬间。
year
- 减 1900 的年份。
month
- 0-11 之间的月份。
date
- 一月中 1-31 之间的某一天。
hrs
- 0-23 之间的小时数。
min
- 0-59 之间的分钟数。
Calendar
@Deprecated public Date(int year, int month, int date, int hrs, int min, int sec)
Calendar.set(year + 1900, month, date, hrs, min, sec)
或 GregorianCalendar(year + 1900, month, date, hrs, min, sec)
取代。
Date
对象,并初始化此对象,以表示本地时区中由
year
、
month
、
date
、
hrs
、
min
和
sec
参数指定的秒的开始瞬间。
year
- 减 1900 的年份。
month
- 0-11 之间的月份。
date
- 一月中 1-31 之间的某一天。
hrs
- 0-23 之间的小时数。
min
- 0-59 之间的分钟数。
sec
- 0-59 之间的秒数。
Calendar
@Deprecated public Date(String s)
DateFormat.parse(String s)
取代。
Date
对象并初始化此对象,以表示字符串
s
指出的日期和时间,就像通过
parse(java.lang.String)
方法解释一样。
s
- 日期的字符串表示形式。
DateFormat
,
parse(java.lang.String)
方法详细信息 |
---|
public Object clone()
@Deprecated public static long UTC(int year, int month, int date, int hrs, int min, int sec)
Calendar.set(year + 1900, month, date, hrs, min, sec)
或 GregorianCalendar(year + 1900, month, date, hrs, min, sec)
取代,使用 UTC TimeZone
,后跟 Calendar.getTime().getTime()
。
year
- 减 1900 的年份。
month
- 0-11 之间的月份。
date
- 一月中 1-31 之间的某一天。
hrs
- 0-23 之间的小时数。
min
- 0-59 之间的分钟数。
sec
- 0-59 之间的秒数。
Calendar
@Deprecated public static long parse(String s)
DateFormat.parse(String s)
取代。
它接受许多语法;特别是它识别 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,+-:/
连续的十进制位序列被当成十进制数:
SimpleDateFormat
中使用的小于 100 的年份具有稍微不同的解释。 连续的字母序列被认为是单词,并按以下方法进行处理:
一旦扫描了整个字符串,就以两种方式之一把它转换成时间结果。如果已经识别时区或时区偏移量,那么年、月、月中某一天、小时、分钟和秒以 UTC 进行解释,然后应用时区偏移量。否则,年、月、月中某一天、小时、分钟和秒用本地时区进行解释。
s
- 要解析为日期的字符串。
DateFormat
@Deprecated public int getYear()
Calendar.get(Calendar.YEAR) - 1900
取代。
Date
对象表示的瞬间的年份减去 1900 的结果(用本地时区进行解释)。
Calendar
@Deprecated public void setYear(int year)
Calendar.set(Calendar.YEAR, year + 1900)
取代。
Date
对象,以便它用与以前相同的月份、日期、小时、分钟和秒表示指定年份中的时间点(用本地时区进行解释)。(当然,例如,如果日期是 2 月 29 日,并且年份被设置到非闰年,那么新日期将被看作 3 月 1 日。)
year
- 年份值。
Calendar
@Deprecated public int getMonth()
Calendar.get(Calendar.MONTH)
取代。
0
和
11
之间,值
0
表示 1 月。
Calendar
@Deprecated public void setMonth(int month)
Calendar.set(Calendar.MONTH, int month)
取代。
month
- 0-11 之间的月份值。
Calendar
@Deprecated public int getDate()
Calendar.get(Calendar.DAY_OF_MONTH)
取代。
1
和
31
之间,表示包含或开始于此
Date 对象表示的时间的月份中的某一天(用本地时区进行解释)。
Calendar
@Deprecated public void setDate(int date)
Calendar.set(Calendar.DAY_OF_MONTH, int date)
取代。
date
- 月份中 1-31 之间的某一天。
Calendar
@Deprecated public int getDay()
Calendar.get(Calendar.DAY_OF_WEEK)
取代。
Calendar
@Deprecated public int getHours()
Calendar.get(Calendar.HOUR_OF_DAY)
取代。
Calendar
@Deprecated public void setHours(int hours)
Calendar.set(Calendar.HOUR_OF_DAY, int hours)
取代。
hours
- 小时值。
Calendar
@Deprecated public int getMinutes()
Calendar.get(Calendar.MINUTE)
取代。
0
和
59
之间。
Calendar
@Deprecated public void setMinutes(int minutes)
Calendar.set(Calendar.MINUTE, int minutes)
取代。
minutes
- 分钟值。
Calendar
@Deprecated public int getSeconds()
Calendar.get(Calendar.SECOND)
取代。
0
和
61
之间。值
60
和
61
只可能发生在考虑了闰秒的 Java 虚拟机上。
Calendar
@Deprecated public void setSeconds(int seconds)
Calendar.set(Calendar.SECOND, int seconds)
取代。
seconds
- 秒数值。
Calendar
public long getTime()
public void setTime(long time)
Date
对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后
time
毫秒的时间点。
time
- 毫秒数。
public boolean before(Date when)
when
- 日期。
true
;否则返回
false
。
NullPointerException
- 如果
when
为 null。
public boolean after(Date when)
when
- 日期。
true
;否则返回
false
。
NullPointerException
- 如果
when
为 null。
public boolean equals(Object obj)
null
,并且是一个表示与此对象相同的时间点(到毫秒)的
Date
对象时,结果才为
true
。
因此,当且仅当 getTime
方法对于两个 Date
对象返回相同的 long
值时,这两个对象才是相等的。
obj
- 要与之比较的对象。
true
;否则,返回
false
。
getTime()
public int compareTo(Date anotherDate)
Comparable<Date>
中的
compareTo
anotherDate
- 要比较的
Date
。
0
;如果此 Date 在 Date 参数之前,则返回小于
0
的值;如果此 Date 在 Date 参数之后,则返回大于
0
的值。
NullPointerException
- 如果
anotherDate
为 null。
public int hashCode()
getTime()
方法返回的基本
long 值的两部分的异或。也就是说,哈希码就是以下表达式的值:
(int)(this.getTime()^(this.getTime() >>> 32))
Object.equals(java.lang.Object)
,
Hashtable
public String toString()
Date
对象转换为以下形式的
String
:
其中:dow mon dd hh:mm:ss zzz yyyy
toLocaleString()
,
toGMTString()
@Deprecated public String toLocaleString()
DateFormat.format(Date date)
取代。
strftime()
函数支持的 "
%c
" 格式。
DateFormat
,
toString()
,
toGMTString()
@Deprecated public String toGMTString()
DateFormat.format(Date date)
取代,使用 GMT TimeZone
。