📄 java_utildate.htm
字号:
<html>
<!-- #BeginTemplate "/Templates/more.dwt" -->
<head>
<!-- #BeginEditable "doctitle" -->
<title>csdn_java.util中的Date类</title>
<!-- #EndEditable -->
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<STYLE type=text/css>
A:link {
COLOR: #000000; FONT-FAMILY:verdana,宋体,新宋体; TEXT-DECORATION: none
}
A:visited {
COLOR: #333399; FONT-FAMILY:verdana,宋体,新宋体; TEXT-DECORATION: none
}
A:active {
COLOR: #ff0000; FONT-FAMILY:verdana,宋体,新宋体; TEXT-DECORATION: none
}
A:hover {
COLOR: black; TEXT-DECORATION: underline
}
BODY {
COLOR: #000000; FONT-SIZE:9pt; LETTER-SPACING: normal; LINE-HEIGHT: 150%; WORD-SPACING: 2em
}
TH {
FONT-SIZE: 9pt
}
TD {
FONT-SIZE: 9pt
}
TD.page {
COLOR: #000000; FONT-SIZE:9pt; LETTER-SPACING: normal; LINE-HEIGHT: 150%; WORD-SPACING: 2em
}
TD.title {
COLOR: #000000; FONT-FAMILY:verdana,宋体,新宋体
}
TD.detail {
COLOR: #9966ff; FONT-FAMILY:verdana,宋体,新宋体
}
</STYLE>
</head>
<body bgcolor="#FFFFFF" text="#000000" >
<div align="center"></div>
<table width="700" border="0" align="center">
<tr>
<table width="700" border="1" cellpadding="1" cellspacing="0" bordercolorlight="#9898ba" bordercolordark="#000000">
</table>
<table width="700" cellspacing="0" cellpadding="0" bgcolor="9898ba" border="0">
<tr valign="middle"></tr>
</table>
<div align="center"><b></div>
<table width="700" border="0" cellspacing="0" cellpadding="0" bgcolor="eff3f9">
<tr></tr>
</table>
<br>
<table width="700" border="0">
<tr>
<td width="20"> </td>
<td colspan="2">
<div align="center">
<h3><b><!-- #BeginEditable "5" --><font face="Verdana, Arial, Helvetica, sans-serif" >java.util中的Date类</font><!-- #EndEditable --></b></h3>
</div>
</td>
<td width="20"> </td>
</tr>
<tr>
<td width="20"> </td>
<td colspan="2"><!-- #BeginEditable "6" --><br>
在JSP中,我们经常要处理有关日期和时间的信息,这时候你可以使用java.util中的Date类,在编写Java源程序时,情况很明显,你必须通过“import
java.util.*”引入java.util软件包;而在编写JSP源程序时,由于Date不是JSP的默认对象,你仍然必须通过“<%@
page import="java.util.*"”引入这个软件包。此外,由于在java.sql中存在一个同名的Date类,为了将这两者正确地区分,凡是用到java.util中的Date类时,你最好将其写成java.util.Date。<br>
事实上,Date类并不仅仅表示日期,而是精确到毫秒。从这个角度看,也许将其称为DateTime更为合适,在本文中,我们有时也将Date称为日期,希望不会引起读者的误解。<br>
在谈到java.util中的Date类时,我们经常会提到UTC和GMT,这两者几乎是同一概念。它们都是指的格林尼治标准时间,只不过UTC的称呼更为正式一点。两者的区别在于前者是一个天文上的概念,而后者是基于一个原子钟。在UTC中,每一年或两年会有一个“闰秒”,而我们一般不理会这个“闰秒”,但是在Java中,这造成我们有时会出现60秒或61秒。<br>
Date类中有相应的方法,它可以将日期分解为年、月、日、时、分、秒,可以将其转换成一个字符串,它还可以执行反向的操作。但是从JDK1.1开始,Calendar类和Date
Format类也可以执行这两类的功能,按照Java的官方文件,相应的在Date类中的方法不再推荐使用。但是在原理上,两者并没过大的差别。在本文中,我们仍将介绍这些方法,只是会作相应的注明。<br>
在所有情况下,这些方法所接受的参数都不需要满足有效范围;例如,一个日期如果被定义为1月32日,它将被解释为2月1日。
<p> 一、Date的构造函数</p>
<p> 1.1构造一个反映当时时间的Date实例<br>
Date<br>
public Date()<br>
构造一个Date对象并对其进行初始化以反映当前时间。 </p>
<p> 1.2从一个长整型数据构造一个Date实例<br>
Date<br>
public Date(long date)<br>
构造一个Date对象,并根据相对于GMT 1970年1月1日00:00:00的毫秒数对其进行初始化。 <br>
参数: <br>
date - 相对于GMT 1970年1月1日00:00:00的毫秒数。 </p>
<p> 1.3从年月日时分秒构造一个Date实例<br>
Date<br>
public Date(int year,<br>
int month,<br>
int date)<br>
public Date(int year,<br>
int month,<br>
int date,<br>
int hrs,<br>
int min)<br>
public Date(int year,<br>
int month,<br>
int date,<br>
int hrs,<br>
int min,<br>
int sec)<br>
这三个构造函数均不推荐使用,在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)代替。 </p>
<p> 构造一个Date对象,并分别将其初始化为year、month和date所对应日期的开始时间(即午夜)、year、month、date、hrs和min所对应分钟的开始时间、year、month、date、hrs、
min和sec所对应秒的开始时间。 <br>
参数: <br>
year - 年份减去1900。 <br>
month - 月份在0-11之间。 <br>
date - 日期在1-31之间。 <br>
hrs - 小时在0-23之间。 <br>
min - 分钟在0-59之间。 <br>
sec - 秒在0-59之间。 </p>
<p> 1.4从一个字符串构造一个Date实例<br>
Date<br>
public Date(String s)<br>
不推荐使用。 在JDK 1.1版中,被DateFormat.parse(String s)代替。 <br>
构造一个Date对象,并将其初始化为字符串s所对象的日期和时间。对字符串的解析将和parse(java.lang.String)方法一样。
<br>
参数: <br>
s - 一个反映日期的字符串。 </p>
<p> 二、其它方法</p>
<p> 2.1将一个字符串转换成Date对象相应的长整形表示<br>
parse<br>
public static long parse(String s)<br>
不推荐使用。 在JDK 1.1版中,被DateFormat.parse(String s)代替。 <br>
试图将字符串s作为日期和时间的表示来解析。如果解析是成功的,将返回相对于GMT 1970年1月1日00:00:00的毫秒数。反之,将抛出IllegalArgumentException例外。
<br>
它可以接受许多语句格式;具体地说,它可以理解这种格式:"Sat, 12 Aug 1995 13:30:00 GMT"。它也可以理解U.S.这样的时区缩写,但是通常,我们这样表示时区:"Sat,
12 Aug 1995 13:30:00 GMT+0430"。如果没指明时区,那就表示默认当前的时区。在这里,GMT和UTC表示相同的概念。
<br>
字符串s是从左到右进行处理的。在“(”和“)”之间的字符将被忽略。括号可以嵌套。此外,该字符串只能包含以下字符: <br>
abcdefghijklmnopqrstuvwxyz<br>
ABCDEFGHIJKLMNOPQRSTUVWXYZ<br>
0123456789,+-:/<br>
和空格。 <br>
在该字符串中出现的数字将按以下规则解析: <br>
如果一个数字以+或-开头,而且年份已经被验证,那么这个数字将被认为是时区设置。如果这个数字小于24,这代表是时区偏移的小时。否则,就是时区偏移的分钟。符号-表示西部的时区。时区设置总是相对于UTC的。这样,例如,-5表示"格林尼治西5小时",而+0430
表示"格林尼治东4小时30分"。你也可以使用冗余的字符:GMT、UT和UTC。例如,GMT-5或utc+0430。
<br>
如果满足下列条件之一,这个数字将表示年份: <br>
1、数字等于或大于70而且后面跟着一个空格、逗号或斜杠,或者是在字符串的结尾。 <br>
2、如果数字小于70,而且月份或日期已经被定义。<br>
如果表示年份的数字小于100,这是一个缩写,表示在当前的80年之前、19年之后的一个区间中一个年份。如果当前是1999年,那么19到99表示1919到1999,而0到18表示2000到2018。这里需要特别注意和SimpleDateFormat中的不同。
<br>
如果数字后面跟着一个冒号,这表示小时,除非小时已经被定义。在小时已经被定义的情况下,这表示分钟。 <br>
如果数字后面跟着一个斜杠,这表示月份(这里0到11表示一到十二月),除非月份已经被定义。在月份已经被定义的情况下,这表示日期。
<br>
如果数字后面跟着一个空格、逗号或连字号,或者是在字符串的结尾,在已经定义了小时但还没有定义分钟的情况下,这表示分钟;在已经定义了小时和分钟但还没有定义秒的情况下,这表示秒;否则这表示日期。
<br>
在该字符串中出现的字母将按以下规则解析: <br>
AM(忽略大小写),将被忽略(但是如果小时未被定义、小于1或大于12,解析将失败)。 <br>
PM(忽略大小写),将在小时后加12(但是如果小时未被定义、小于1或大于12,解析将失败)。 <br>
SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY和SATURDAY以及它们的前缀(忽略大小写),将被忽略。例如sat,
Friday, TUE和Thurs都将被忽略。 <br>
此外,JANUARY、FEBRUARY、MARCH、APRIL、MAY、JUNE、JULY、AUGUST、SEPTEMBER、OCTOBER、NOVEMBER和DECEMBER以及它们的前缀(忽略大小写),将按这里的顺序被视为表示月份并将其转换成数字(0
to 11)。例如,aug, Sept, april和NOV都表示月份。而Ma将被理解为MARCH而不是MAY。 <br>
GMT, UT和UTC(忽略大小写),将被视为UTC。 <br>
EST, CST, MST和PST(忽略大小写),将被视为北美的时区,分别是格林尼治西5小时、6小时、7小时、8小时。而EDT,
CDT, MDT和PDT表示同一概念。<br>
当全部字符串被扫描时,如果时区被定义,时间被认为是UTC的时间,然后再应用时区。否则,时间指当前时区的时间。<br>
参数: <br>
s - 一个作为日期解析的日期。 <br>
返回: <br>
相对于GMT 1970年1月1日00:00:00的毫秒数。 <br>
2.2获取Date对象中的年、月、日、时、分、秒元素以及星期<br>
getYear<br>
public int getYear()<br>
getMonth<br>
public int getMonth()<br>
getDate<br>
public int getDate()<br>
getDay<br>
public int getDay()<br>
getHours<br>
public int getHours()<br>
getMinutes<br>
public int getMinutes()<br>
getSeconds<br>
public int getSeconds()<br>
这组方法均不推荐使用。 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)代替。
<br>
其功能依次为:<br>
返回Date所对应年份减去1900。 <br>
返回Date对象所对应的月份。返回值在0到11之间,0表示1月。 <br>
返加这个Date对象的日期。返回值在1到31之间。 <br>
返回这个日期的星期。(0 = 星期天, 1 = 星期一, 2 = 星期二, 3 = 星期三, 4 = 星期四, 5 = 星期五,
6 = 星期六) <br>
返加这个Date对象的小时。返回值是一个0到23的数字。 <br>
返回这个日期的分钟,返回值在0到59之间。 <br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -