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)
返回值:
当前时区的设置,精确到分钟
本地时间转换成格林威治时间:
long mTime = System.currentTimeMillis();
int offset = Calendar.getInstance().getTimeZone().getRawOffset();
Calendar c = Calendar.getInstance();
c.setTime(new Date(mTime - offset));
System.out.println(c.getTime());
Date nowTime = new Date();
System.out.println( "现在的时间: " + nowTime);
SimpleDateFormat matter1 = new SimpleDateFormat( " 'time ': yyyy-MM-dd HH:mm:ss z ");
matter1.setTimeZone(TimeZone.getTimeZone( "GMT "));
System.out.println( "现在的时间: " + matter1.format(nowTime));
五;得到当前客户机时区的JS代码
<SCRIPT>// 你的pubDate时间var dateTimeString = "Thursday, 9 December 2004 12:39:00 GMT";// parse到日期对象中var dateTimeObject = new Date(dateTimeString);// 得到本地(系统)时区var timezoneOffset = new Date().getTimezoneOffset()/60*-1;document.write('本计算机时区: '+timezoneOffset+'<br/>');// 得到时间document.write('原时间字符串: '+dateTimeString+'<br/>');document.write('转换为本地时间: '+dateTimeObject.toLocaleString());</SCRIPT>
分享到:
相关推荐
daterangepicker是一款广泛应用于网页开发中的时间范围选择插件,它基于JavaScript库jQuery,为用户提供直观、易用的日期和时间范围选择功能。在网页中集成daterangepicker,可以极大地提升用户体验,尤其是在需要...
**jQuery date_input 日期插件详解** 在网页开发中,日期选择功能是非常常见的,例如在填写表单时的出生日期、预约日期等。jQuery date_input 插件是为了解决这个问题而设计的一个实用工具,它提供了用户友好的界面...
【wui-date】是一个专为前端开发者设计的轻量级日期时间选择器组件,它以其简洁的界面和高效的性能在Web应用中得到了广泛的应用。基于流行的JavaScript库jQuery和AngularJS框架,wui-date使得在网页上添加交互式、...
### JDBC操作数据库之Date类型详解 #### 一、引言 在进行数据库操作时,日期时间类型的处理一直是开发过程中的一个难点。对于不同的框架和技术栈,处理日期的方式也会有所不同。本文将详细介绍如何在JDBC中操作`...
在Java编程语言中,`Date`和`Calendar`类是处理日期和时间的核心组件。这两个类在不同的Java版本中有着不同的使用方式和功能,对于理解Java时间处理机制至关重要。本篇将深入探讨`Date`和`Calendar`类的实例应用。 ...
bootstrap 时间控件 daterangepicker 使用方法及各种小 bug 修复 Bootstrap 的时间控件 daterangepicker 是一个功能强大且灵活的日期选择器插件,它可以帮助开发者快速实现日期选择功能。下面将详细介绍 daterange...
最近遇到一个问题,就是获取表单中的日期往后台通过json方式传的时候,遇到Date.parse(str)函数在ff下报错: NAN 找了些资料,发现是由于Date.parse()函数对日期格式有要求:详细参考 Date.parse函数 对于js操作日期: ...
### String与Date的转换 #### 一、引言 在Java开发中,字符串(String)与日期(Date)之间的转换是一项常见的需求。例如,在处理用户输入的数据、解析文本文件或与数据库交互时,通常需要将字符串转换为日期对象进行...
Java_Date_日期时间整理 Java 中的日期时间处理是非常重要的,以下是 Java 中日期时间整理的知识点总结: 一、获取服务器端当前日期 在 Java 中,可以使用 `java.util.Date` 类来获取服务器端当前日期。可以使用...
在Java编程语言中,`java.util.Date` 类是用于表示特定瞬间,精确到毫秒的时间。这个类在处理日期和时间方面非常基础,是许多其他日期/时间API的基础。本篇将详细介绍如何使用`Date`类来获取系统的当前时间。 首先...
### Java中DATE与时间戳互化的知识点解析 #### 一、时间戳的基本概念 时间戳在计算机领域中通常指的是从某一固定时刻起始所经过的毫秒数,这个固定时刻通常指的是1970年1月1日00:00:00 UTC。在Java中,时间戳主要...
### Linux下的Date命令详解:格式化输出与时间设置 #### 一、Date命令概述 `date` 命令在Linux系统中是一个非常基础且重要的工具,主要用于显示或设置系统的日期与时间。通过灵活地使用该命令的不同选项,用户不仅...
### Web中Date类型解决方法 #### 一、StrutsForm中Date类型之“argumenttypemismatch”错误解决方法 在Web开发中,特别是在使用Struts框架处理表单数据时,经常会遇到日期类型处理的问题。当用户提交包含日期的...
在微信小程序开发中,`new Date()`方法是用于创建日期对象的关键方法,但在某些情况下可能会出现失效的问题,尤其是在特定的移动设备或操作系统上。根据给出的文件信息,可以了解微信小程序中`new Date()`方法失效的...
在MATLAB编程环境中,日期和时间的处理是十分常见的任务,`date`函数就是其中的一个关键工具,用于处理和格式化日期与时间数据。本文将深入探讨`date`函数及其在MATLAB中的应用,帮助你全面理解这个强大的功能。 ##...
前一日函数 前一日函数 前一日函数 Pre Date 是 NextDateNextDateNextDate NextDate的逆函数,即给定一 个月份、日期年会返回前的逆函数,即给定一 个月份、日期年会返回前的逆函数,即给定一 个月份、日期年会返回...
在这个特定的场景中,我们有一个名为`Date`的类,它内部包含了一个`Time`类的对象作为其成员。这种设计使得`Date`类能够利用`Time`类的功能,并且可以通过其内部的`Time`对象来处理时间相关的操作。接下来,我们将...