`
huangjiateng
  • 浏览: 35916 次
社区版块
存档分类
最新评论

DATE

 
阅读更多
Date类中有相应的方法,它可以将日期分解为年、月、日、时、分、秒,可以将其转换成一个字符串,它还可以执行反向的操作。但是从JDK1.1开始,Calendar类和Date Format类也可以执行这两类的功能,按照Java的官方文件,相应的在Date类中的方法不再推荐使用。但是在原理上,两者并没过大的差别。在本文中,我们仍将介绍这些方法,只是会作相应的注明。
在所有情况下,这些方法所接受的参数都不需要满足有效范围;例如,一个日期如果被定义为1月32日,它将被解释为2月1日。
一、Date的构造函数

1.1构造一个反映当时时间的Date实例
Date
public Date()
构造一个Date对象并对其进行初始化以反映当前时间。

1.2从一个长整型数据构造一个Date实例
Date
public Date(long date)
构造一个Date对象,并根据相对于GMT 1970年1月1日00:00:00的毫秒数对其进行初始化。
参数:
date - 相对于GMT 1970年1月1日00:00:00的毫秒数。

1.3从年月日时分秒构造一个Date实例
Date
public Date(int year,
int month,
int date)
public Date(int year,
int month,
int date,
int hrs,
int min)
public Date(int year,
int month,
int date,
int hrs,
int min,
int sec)
这三个构造函数均不推荐使用,在JDK 1.1版中,分别被Calendar.set(year + 1900, month, date)或GregorianCalendar(year + 1900, month, date)、Calendar.set(year + 1900, month, date, hrs, min)或 GregorianCalendar(year + 1900, month, date, hrs, min)、Calendar.set(year + 1900, month, date, hrs, min, sec)或GregorianCalendar(year + 1900, month, date, hrs, min, sec)代替。

构造一个Date对象,并分别将其初始化为year、month和date所对应日期的开始时间(即午夜)、year、month、date、hrs和min所对应分钟的开始时间、year、month、date、hrs、 min和sec所对应秒的开始时间。
参数:
year - 年份减去1900。
month - 月份在0-11之间。
date - 日期在1-31之间。
hrs - 小时在0-23之间。
min - 分钟在0-59之间。
sec - 秒在0-59之间。

1.4从一个字符串构造一个Date实例
Date
public Date(String s)
不推荐使用。 在JDK 1.1版中,被DateFormat.parse(String s)代替。
构造一个Date对象,并将其初始化为字符串s所对象的日期和时间。对字符串的解析将和parse(java.lang.String)方法一样。
参数:
s - 一个反映日期的字符串。

二、其它方法

2.1将一个字符串转换成Date对象相应的长整形表示
parse
public static long parse(String s)
不推荐使用。 在JDK 1.1版中,被DateFormat.parse(String s)代替。
试图将字符串s作为日期和时间的表示来解析。如果解析是成功的,将返回相对于GMT 1970年1月1日00:00:00的毫秒数。反之,将抛出IllegalArgumentException例外。
它可以接受许多语句格式;具体地说,它可以理解这种格式:"Sat, 12 Aug 1995 13:30:00 GMT"。它也可以理解U.S.这样的时区缩写,但是通常,我们这样表示时区:"Sat, 12 Aug 1995 13:30:00 GMT+0430"。如果没指明时区,那就表示默认当前的时区。在这里,GMT和UTC表示相同的概念。
字符串s是从左到右进行处理的。在“(”和“)”之间的字符将被忽略。括号可以嵌套。此外,该字符串只能包含以下字符:
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789,+-:/
和空格。
在该字符串中出现的数字将按以下规则解析:
如果一个数字以+或-开头,而且年份已经被验证,那么这个数字将被认为是时区设置。如果这个数字小于24,这代表是时区偏移的小时。否则,就是时区偏移的分钟。符号-表示西部的时区。时区设置总是相对于UTC的。这样,例如,-5表示"格林尼治西5小时",而+0430 表示"格林尼治东4小时30分"。你也可以使用冗余的字符:GMT、UT和UTC。例如,GMT-5或utc+0430。
如果满足下列条件之一,这个数字将表示年份:
1、数字等于或大于70而且后面跟着一个空格、逗号或斜杠,或者是在字符串的结尾。
2、如果数字小于70,而且月份或日期已经被定义。
如果表示年份的数字小于100,这是一个缩写,表示在当前的80年之前、19年之后的一个区间中一个年份。如果当前是1999年,那么19到99表示1919到1999,而0到18表示2000到2018。这里需要特别注意和SimpleDateFormat中的不同。
如果数字后面跟着一个冒号,这表示小时,除非小时已经被定义。在小时已经被定义的情况下,这表示分钟。
如果数字后面跟着一个斜杠,这表示月份(这里0到11表示一到十二月),除非月份已经被定义。在月份已经被定义的情况下,这表示日期。
如果数字后面跟着一个空格、逗号或连字号,或者是在字符串的结尾,在已经定义了小时但还没有定义分钟的情况下,这表示分钟;在已经定义了小时和分钟但还没有定义秒的情况下,这表示秒;否则这表示日期。
在该字符串中出现的字母将按以下规则解析:
AM(忽略大小写),将被忽略(但是如果小时未被定义、小于1或大于12,解析将失败)。
PM(忽略大小写),将在小时后加12(但是如果小时未被定义、小于1或大于12,解析将失败)。
SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY和SATURDAY以及它们的前缀(忽略大小写),将被忽略。例如sat, Friday, TUE和Thurs都将被忽略。
此外,JANUARY、FEBRUARY、MARCH、APRIL、MAY、JUNE、JULY、AUGUST、SEPTEMBER、OCTOBER、NOVEMBER和DECEMBER以及它们的前缀(忽略大小写),将按这里的顺序被视为表示月份并将其转换成数字(0 to 11)。例如,aug, Sept, april和NOV都表示月份。而Ma将被理解为MARCH而不是MAY。
GMT, UT和UTC(忽略大小写),将被视为UTC。
EST, CST, MST和PST(忽略大小写),将被视为北美的时区,分别是格林尼治西5小时、6小时、7小时、8小时。而EDT, CDT, MDT和PDT表示同一概念。
当全部字符串被扫描时,如果时区被定义,时间被认为是UTC的时间,然后再应用时区。否则,时间指当前时区的时间。
参数:
s - 一个作为日期解析的日期。
返回:
相对于GMT 1970年1月1日00:00:00的毫秒数。
2.2获取Date对象中的年、月、日、时、分、秒元素以及星期
getYear
public int getYear()
getMonth
public int getMonth()
getDate
public int getDate()
getDay
public int getDay()
getHours
public int getHours()
getMinutes
public int getMinutes()
getSeconds
public int getSeconds()
这组方法均不推荐使用。 JDK 1.1版中,分别被Calendar.get(Calendar.YEAR) - 1900、Calendar.get(Calendar.MONTH)、Calendar.get(Calendar.DAY_OF_MONTH)、Calendar.get(Calendar.DAY_OF_WEEK)、Calendar.get(Calendar.HOUR_OF_DAY)、Calendar.get(Calendar.MINUTE)、Calendar.get(Calendar.SECOND)代替。
其功能依次为:
返回Date所对应年份减去1900。
返回Date对象所对应的月份。返回值在0到11之间,0表示1月。
返加这个Date对象的日期。返回值在1到31之间。
返回这个日期的星期。(0 = 星期天, 1 = 星期一, 2 = 星期二, 3 = 星期三, 4 = 星期四, 5 = 星期五, 6 = 星期六)
返加这个Date对象的小时。返回值是一个0到23的数字。
返回这个日期的分钟,返回值在0到59之间。
返回日期的秒。返回值在0到61之间。60和61 仅仅在Java虚拟机在处理闰秒时出现。

2.3设置Date对象中的年、月、日、时、分、秒元素
setYear
public void setYear(int year)
setMonth
public void setMonth(int month)
setDate
public void setDate(int date)
setHours
public void setHours(int hours)
setMinutes
public void setMinutes(int minutes)
setSeconds
public void setSeconds(int seconds)
这组方法均不推荐使用。在JDK 1.1版中,分别被Calendar.set(Calendar.YEAR, year + 1900)、Calendar.set(Calendar.MONTH, int month)、Calendar.set(Calendar.DAY_OF_MONTH, int date)、Calendar.set(Calendar.HOUR_OF_DAY, int hours)、Calendar.set(Calendar.MINUTE, int minutes)、Calendar.set(Calendar.SECOND, int seconds)代替。
其功能依次为:
设置Date对象的年份为指定值加1900。Date对象的其它属性不变(如果日期是2月29日,而所设置的年是非闰年,新的日期将是3月1日。)
设置日期的月份为指定值。日期的其它元素不变。如果日期是10月31日,而现在月份设为6月,新的日期将是7月1日,因为6月只有30天。
设置Date对象的日期为指定值。日期的其它元素不变。如果日期是4月31日,而现在日期设为31日,新的日期将是5月1日,因为4月只有30天。
设置这个Date对象的小时,日期的其它元素不变。
设置这个Date对象的分钟为指定值,日期的其它元素不变。
将这个Date对象的秒设置为指定值。对象的其它属性不变。
其参数依次为:
year - 年份。
month - 月份在0-11之间。
date - 日期在1-31之间。
hours - 小时值。
minutes - 分钟。
seconds - 秒。

2.4两个日期对象的比较
before
public boolean before(Date when)
after
public boolean after(Date when)
equals
public boolean equals(Object obj)
compareTo
public int compareTo(Date anotherDate)
compareTo
public int compareTo(Object o)
其功能依次为:
测试这个日期是否在指定日期之前。
测试这个日期是否在指定日期之后。
比较两个日期是否相等。当且仅当参数不为空,而且参数与这个Date对象完全相等时(精确到毫秒级),返回true。事实上,两个Date对象相等,也就是说getTime方法返回同一个长整型数据。
比较两个日期的顺序。
将这个日期与另一个对象比较。如果这个对象是一个日期,其功能将与compareTo(Date)完全相似。否则会抛出一个ClassCastException例外(因为日期只能与另一个日期比较)。
其参数依次为:
when - 一个日期。
when - 一个日期。
obj - 用来比较的对象。
anotherDate - 用来比较的Date。
o - 用来比较的Object。
返回依次为:
当且仅当这个Date对象早于when时返回true;否则返回false。
当且仅当这个Date对象迟于when时返回true;否则返回false。
两个对象相等时返回true,否则返回false。
如果两个日期相等返回0;如果日期在参数值之前返回小于0的数值;如果日期在参数值之前返回大于0的数值。
如果两个日期相等返回0;如果日期在参数值之前返回小于0的数值;如果日期在参数值之前返回大于0的数值。

2.5日期对象及其对应的长整型表示
getTime
public long getTime()
返回这个Date对象相对于GMT 1970年1月1日00:00:00的毫秒数。
返回:
相对于GMT 1970年1月1日00:00:00的毫秒数。

setTime
public void setTime(long time)
按照相对于GMT 1970年1月1日00:00:00的毫秒数设置这个Date对象。
参数:
time - 毫秒数。

2.6其它
clone
public Object clone()
返回这个对象的一个拷贝。
返回:
这个实例的一个拷贝。
抛出:
CloneNotSupportedException - 如果这个对象的类不支持Cloneable接口。将抛出这个例外。
OutOfMemoryError - 没有足够的内存。

UTC
public 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() 后面所代替。
根据参数确定日期和时间。这个参数被解析为年、月、日、时、分、秒。就和在Date 构造函数中一样,只不过是使用的UTC而不是使用当前时区。这个时间将被表示为相对于GMT 1970年1月1日00:00:00的毫秒数。
参数:
year - 年份减去1900。
month - 月份在0-11之间。
date - 日期在1-31之间。
hrs - 小时在0-23之间。
min - 分钟在0-59之间。
sec - 秒在0-59之间。
返回:
参数所对应日期相对于GMT 1970年1月1日00:00:00的毫秒数。

hashCode
public int hashCode()
返回这个对象的hash代码值,也就是说对getTime()方法返回的长整型数值作如下运算:
(int)(this.getTime()^(this.getTime() >>> 32))
返回:
这个对象的hash代码值。

toString
public String toString()
将这个Date对象转换成如下格式的String:
dow mon dd hh:mm:ss zzz yyyy
在这里:
dow是星期(Sun, Mon, Tue, Wed, Thu, Fri, Sat)。
mon是月份(Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec)。
dd是日期(01到31),用两位数字表示。
hh是小时(00到23),用两位数字表示。
mm是分钟(00到59),用两位数字表示。
ss是秒(00到61,用两位数字表示。
zzz是时区。标准的时区的缩写和在parse方法中的一样。如果时区信息无效zzz为空 - 也就是说,不包含任何字符。
yyyy是年份,用四位数字表示。
返回:
表示这个日期的字符串。

toLocaleString
public String toLocaleString()
不推荐使用。 JDK 1.1版中,被DateFormat.format(Date date)代替。
按照当前格式生成反映这个Date对象的字符串。这种格式字符串对于Java应用程序开发员应该是相当熟悉的。然而,它与ISO C中strftime()函数的"%c"格式并不完全相同。
返回:
反映这个日期的字符串,使用当前的约定。

toGMTString
public String toGMTString()
不推荐使用。 JDK 1.1版中,被DateFormat.format(Date date)(使用GMT 时区)代替。
按以下格式建立一个反映这个Date对象的字符串: d mon yyyy hh:mm:ss GMT
其中:
d日期(1到31),用一到两位数字表示。
mon月份(Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec)。
yyyy年份,用四位数字表示。
hh小时(00到23),用两位数字表示。
mm分钟(00到59),用两位数字表示。
ss秒(00到61),用两位数字表示。
GMT指定为格林尼治标准时。
返回值与当前时区无关。
返回:
反映当前日期的字符串(使用Internet GMT)。

getTimezoneOffset
public int getTimezoneOffset()
不推荐使用。 JDK 1.1版中,被Calendar.get(Calendar.ZONE_OFFSET) + Calendar.get(Calendar.DST_OFFSET)代替。
返回时区,精确到分钟。
例如,在麻萨诸塞州,应该是格林尼治西5小时:
new Date(96, 1, 14).getTimezoneOffset()返回300,因为在1996年1月14日,使用标准时间(东部标准时);但是,new Date(96, 5, 1).getTimezoneOffset()返回240,因为在1996年5月1日,使用夏令时(东部夏令时)。
这个方法返回值和下列计算的结果一样:
(this.getTime() - UTC(this.getYear(),
this.getMonth(),
this.getDate(),
this.getHours(),
this.getMinutes(),
this.getSeconds())) / (60 * 1000)
返回值:
当前时区的设置,精确到分钟
分享到:
评论

相关推荐

    js字符串日期yyyy-MM-dd转化为date示例代码

    最近遇到一个问题,就是获取表单中的日期往后台通过json方式传的时候,遇到Date.parse(str)函数在ff下报错: NAN 找了些资料,发现是由于Date.parse()函数对日期格式有要求:详细参考 Date.parse函数 对于js操作日期: ...

    黑盒测试 Predate

    前一日函数 前一日函数 前一日函数 Pre Date 是 NextDateNextDateNextDate NextDate的逆函数,即给定一 个月份、日期年会返回前的逆函数,即给定一 个月份、日期年会返回前的逆函数,即给定一 个月份、日期年会返回...

    软件测试NextDate函数决策表测试法实验报告.docx

    软件测试NextDate函数决策表测试法实验报告.docx软件测试NextDate函数决策表测试法实验报告.docx软件测试NextDate函数决策表测试法实验报告.docx软件测试NextDate函数决策表测试法实验报告.docx软件测试NextDate函数...

    软件测试NextDate函数决策表测试法实验报告 (2).pdf

    软件测试NextDate函数决策表测试法实验报告 (2).pdf软件测试NextDate函数决策表测试法实验报告 (2).pdf软件测试NextDate函数决策表测试法实验报告 (2).pdf软件测试NextDate函数决策表测试法实验报告 (2).pdf软件测试...

    有关java中的Date,String,Timestamp之间的转化问题

    Java 中的 Date、String 和 Timestamp 之间的转换问题 Java 中的日期和时间处理是编程中非常重要的一方面,Date、String 和 Timestamp 是三种常用的日期和时间类型,本文将详细介绍它们之间的转换问题。 一、获取...

    Date类 实现输入时间,然后+一天

    定义日期类Date。要求: (1)可以设置日期; (2)日期加一天操作; (3)输出函数,输出格式为“XXXX-XX-XX”; (4)编写主函数,定义对象,完成相应功能。 程序的参考的输入(“Input Date:”为提示文字): ...

    daterangepicker中文示例

    daterangepicker是一个好用的时间范围选择插件,基于jquery,本内容是daterangepicker的中文示例

    JavaScript之Date对象(源代码)

    JavaScript之Date对象(源代码)JavaScript之Date对象(源代码)JavaScript之Date对象(源代码)JavaScript之Date对象(源代码)JavaScript之Date对象(源代码)JavaScript之Date对象(源代码)JavaScript之Date对象...

    SHELL DATE 命令详解

    使用方式 : date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]] 说明 : date 可以用来显示或设定系统的日期不...

    java_sql_Date与java_util_Date转换

    java_sql_Date与java_util_Date转换

    java 时间转换date time = new date()

    java 时间转换 date time = new date() 对时间的格式化。这个可以帮助大家解决时间的问题

    JS IOS/iPhone的Safari浏览器不兼容Javascript中的Date()问题如何解决

    var date = new Date('2016-11-11 11:11:11'); [removed](date); 最近在写一个时间判断脚本,需要将固定好的字符串时间转换为时间戳进行比较,在做的时候个人习惯使用chrome作为调试工具,代码基本完成之后,一切...

    jdbc操作数据库之Date类型

    但是jdbc对应操作date类型的数据和hibernate是不同的,hibernate不需要考虑date是util .date还是sql.date也不需要考虑存入的date是否存有时分秒了。

    NEXTDATE的决策表示例(软件测试技术实验报告)

    NEXTDATE 函数的决策表示例(软件测试技术实验报告) 从测试技术的角度来看, NEXTDATE 函数是一个非常适合使用决策表测试的例子,因为它可以说明输入定义域中的依赖性问题,使得决策表能够突出这种依赖关系。决策...

    javascript中Date对象的getDay方法使用指南

    Date对象有个getDay方法,它根据本地时间,返回一个具体日期中一周的第几天。返回值从0~6,分别对应周日~周六 getDay 0 1 2 3 4 5 6 星期几 周日 周一 周二 周三 周四 周五 周六 用到日期相关的需求时...

    JsonObject转换Date日期

    JsonObject转换Date日期的时候出现问题解决date封装成json数据出现的问题

    Java 之 Date 和 Calendar 实例

    Java 之 Date 和 Calendar 实例

    java DATE与时间戳互化

    java_时间戳与Date_相互转化 (2012-02-10 17:54:49) 转载▼ 标签: java 时间戳 date 转换 转化 杂谈 分类: java 1、时间戳的定义  时间戳是指文件属性里的创建、修改、访问时间。 数字时间戳技术是数字签名...

    wui-date.7z

    wui-date是一个简单漂亮的前端时间选择器,基于jQuery和angularJS开发,源码只有几百行

    date时间控件带时分秒,方便自定义

    date时间控件带时分秒,方便自定义 date时间控件带时分秒,方便自定义 date时间控件带时分秒,方便自定义 date时间控件带时分秒,方便自定义

Global site tag (gtag.js) - Google Analytics