public class Date extends Object implements Serializable, Cloneable, Comparable<Date>
Date课程以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中,以使UT在UT1的0.9秒内保持UTC,这是UT的版本,并应用了某些修正。 还有其他的时间和日期系统; 例如,基于卫星的全球定位系统(GPS)使用的时间尺度与UTC同步,但不对闰秒进行调整。 进一步信息的一个有趣的来源是美国海军天文台,特别是时间局在:
http://tycho.usno.navy.mil
及其“时间系统”的定义如下:
http://tycho.usno.navy.mil/systime.html
在类的所有方法Date接受或返回年,月,日,小时,分钟和秒值,以下表述中使用:
- 1900 。 在所有情况下,为这些目的而提供的方法的论证不必在指定范围内; 例如,可以将日期指定为1月32日,并将其解释为2月1日。
DateFormat , Calendar , TimeZone , Serialized Form
| Constructor and 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) 。
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
after(Date when)
测试此日期是否在指定日期之后。
|
boolean |
before(Date when)
测试此日期是否在指定日期之前。
|
Object |
clone()
返回此对象的副本。
|
int |
compareTo(Date anotherDate)
比较两个日期进行订购。
|
boolean |
equals(Object obj)
比较两个日期来平等。
|
static Date |
from(Instant instant)
从
Instant对象获取一个
Date的实例。
|
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日以来,由此
Date对象表示的00:00:00 GMT的毫秒
数 。
|
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 。
|
Instant |
toInstant()
将此
Date对象转换为
Instant 。
|
String |
toLocaleString()
已弃用
从JDK 1.1版开始,由
DateFormat.format(Date date)替换。
|
String |
toString()
将此
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() 。
|
public Date()
Date对象并对其进行初始化,以便它表示分配的时间,测量到最近的毫秒。
public Date(long date)
Date对象,并将其初始化为表示从标准基准时间(称为“时代”)即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参数。
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) 。
s - 日期的字符串表示形式。
DateFormat , parse(java.lang.String)
@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”。 它也了解美国大陆时区缩写,但对于一般使用,应使用时区偏移:“星期六,1995年8月12日13:30:00 GMT + 0430”(格林威治以西30分钟子午线)。 如果未指定时区,则假定为本地时区。 GMT和UTC被认为是等效的。
字符串s从左到右处理,寻找感兴趣的数据。 s中的ASCII括号内的字符(和)中的任何内容将被忽略。 括号可以嵌套。 否则,内s允许的字符只有这些ASCII字符:
和空格字符。abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789,+-:/
十进制数字的连续序列被视为十进制数:
SimpleDateFormat 。 连续的字母序列被视为一个单词并处理如下:
一旦扫描了整个字符串,它将以两种方式之一转换为时间结果。 如果已经识别出时区或时区偏移量,则以UTC为单位解释年,月,日,月,时,分和秒,然后应用时区偏移。 否则,在本地时区解释年,月,日,时,分,秒。
s - 要解析为日期的字符串。
DateFormat
@Deprecated public int getYear()
Calendar.get(Calendar.YEAR) - 1900 。
Date对象表示的时刻开始的。
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代表一月。
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之间, 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 -
time数。
public boolean before(Date when)
when - 一个日期。
true当且仅当该Date对象所表示的时刻是严格早于when表示的时刻 ;
false否则。
NullPointerException - 如果
when为空。
public boolean after(Date when)
when - 一个日期。
true当且仅当该Date对象所表示的时刻严格晚于when表示的时刻 ;
false否则。
NullPointerException - 如果
when为空。
public boolean equals(Object obj)
true当且仅当参数不是null ,并且是一个Date对象,表示与该对象相同的时间点(毫秒)。
因此,当且仅当getTime方法返回相同的long值时,两个Date对象相等。
public int compareTo(Date anotherDate)
compareTo在界面
Comparable<Date>
anotherDate - 要比较的
Date 。
0 ;
如果此日期在Date参数之前,该值小于0 ;
如果此日期在Date参数0则值大于0 。
NullPointerException - 如果
anotherDate为空。
public int hashCode()
getTime()方法返回的原始long值的两半的异或。
也就是说,哈希码是表达式的值:
(int)(this.getTime()^(this.getTime() >>> 32))
hashCode在类别
Object
Object.equals(java.lang.Object) ,
System.identityHashCode(java.lang.Object)
public String toString()
Date对象转换为String的形式:
哪里:dow mon dd hh:mm:ss zzz yyyy
toString在类别
Object
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 。
哪里:d mon yyyy hh:mm:ss GMT
结果不依赖于当地时区。
DateFormat , toString() , toLocaleString()
@Deprecated public int getTimezoneOffset()
-(Calendar.get(Calendar.ZONE_OFFSET) + Calendar.get(Calendar.DST_OFFSET)) / (60 * 1000) 。
Date对象所表示的时间的本地时区相对于UTC的偏移量(以分钟为Date 。
例如,在马萨诸塞州,格林威治以西的五个时区:
因为1996年2月14日,标准时间(东部标准时间)正在使用,与UTC相隔五小时; 但:new Date(96, 1, 14).getTimezoneOffset() returns 300
因为在1996年6月1日,夏令时间(Eastern Daylight Time)正在使用中,而UTC距离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)
Calendar.ZONE_OFFSET ,
Calendar.DST_OFFSET ,
TimeZone.getDefault()
public static Date from(Instant instant)
Instant对象获取一个Date的实例。
Instant使用毫微秒的精度,而Date使用毫秒的精度。 转换将转换任何超量精度信息,就好像纳秒的数值以百万分之一除数。
Instant可以在未来进一步存储时间点上的积分,并且在过去比Date进一步。 在这种情况下,此方法将抛出异常。
instant - 即时转换
Date代表在提供的时刻的时间线上的相同点
NullPointerException - 如果
instant为空。
IllegalArgumentException - 如果瞬间太大,无法表示为
Date
public Instant toInstant()
Date对象转换为Instant 。
转换创建Instant表示基于时间线,因为这同一点Date 。
Date对象
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.