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
对象