以下内容引用自http://wiki.jikexueyuan.com/project/jsp/handling-date.html:
使用JSP的一个最重要的优点是,可以使用核心Java中所有有效的方法。本教程将使用Java提供的Date类,它在java.util包是有效的,这个类封装了当前的日期和时间。
这个Date类支持两种构造函数。第一种构造函数是初始化当前日期和时间的对象。
Date( )
下面的构造函数是设置一个参数,该参数是从1970年1月1日凌晨0点开始至今的毫秒数。
Date(long millisec)
一旦有一个有效的Date对象,就可以调用以下任何支持的方法实现日期:
方法 | 描述 |
---|---|
boolean after(Date date) | 如果调用的Date对象包含的日期晚于指定的日期,则返 true,否则返回false。 |
boolean before(Date date) | 如果调用的Date对象包含的日期早于指定的日期,则返回true,否则返回false。 |
Object clone( ) | 重复调用的Date对象。 |
int compareTo(Date date) | 比较调用的Date对象与Date的值。如果值是相等的,则返回0。如果调用的Date对象比Date更早,则返回一个负数。如果调用Date 对象是晚于Date的,则返回一个正数。 |
int compareTo(Object obj) | 如果obj是Date类,则操作与compareTo(Date)是同一个,否则抛出ClassCastException异常。 |
boolean equals(Object date) | 如果调用的Date对象与指定的日期有相同的时间和日期,则返回true,否则返回false。 |
long getTime( ) | 返回从1970年1月1日凌晨0点开始至今的毫秒数。 |
int hashCode( ) | 返回调用对象的哈希编码 |
void setTime(long time) | 由指定的时间设置时间和日期,它表示从1970年1月1日凌晨0点开始到指定时间的毫秒数。 |
String toString( ) | 转换调用的Date对象到String类型,并且返回该结果。 |
一、得到当前日期&时间
在JSP程序中,很容易得到当前日期和时间。可以使用一个简单的Date对象调用toString()方法来输出当前的日期和时间,如下所示:
<%&#64; page import&#61;"java.io.*,java.util.*" %>
<html>
<head>
<title>Display Current Date & Timetitle>
head>
<body>
<center>
<h1>Display Current Date & Timeh1>
center>
<%Date date &#61; new Date();out.print( ""center\">" &#43;date.toString()&#43;"
");
%>
body>
html>
现在保存CurrentDate.jsp中的代码&#xff0c;然后使用URL&#xff1a;http://localhost:8080/CurrentDate.jsp
来调用此JSP。将产生如下结果&#xff1a;
尝试刷新URL&#xff1a;http://localhost:8080/CurrentDate.jsp
&#xff0c;将会发现每一次刷新都会有几秒钟的区别。
二、日期比较
正如上面提到的&#xff0c;可以使用所有有效的Java方法在Script中。如果需要比较两个日期&#xff0c;下面是方法&#xff1a;
-
可以用getTime()方法分别获得这两个对象从1970年1月1日凌晨0点开始至今的毫秒数&#xff0c;然后比较这两个值。
-
可以使用方法before()&#xff0c;after()和equals()。因为每月的12日在18日之前&#xff0c;例如&#xff0c;new Date(99,2,12).before(new Date(99,2,18))&#xff0c;返回 true。
- 可以使用compareTo()方法&#xff0c;它由Comparable接口定义并且由Date实现。
三、用SimpleDateFormat实现日期格式化
SimpleDateFormat是用对语言环境敏感的方式来格式化和解析日期的具体类。SimpleDateFormat允许对日期时间格式来选择任何用户定义的模式开始。
修改上面的例子&#xff0c;如下所示&#xff1a;
<%&#64; page import&#61;"java.io.*,java.util.*" %>
<%&#64; page import&#61;"java.text.*" %>
<html>
<head>
<title>Display Current Date & Timetitle>
head>
<body>
<center>
<h1>Display Current Date & Timeh1>
center>
<%Date dNow &#61; new Date( );SimpleDateFormat ft &#61; new SimpleDateFormat ("E yyyy.MM.dd &#39;at&#39; hh:mm:ss a zzz");out.print( ""center\">" &#43; ft.format(dNow) &#43; "
");
%>
body>
html>
使用URL&#xff1a;http://localhost:8080/CurrentDate.jsp&#xff0c;
将产生如下结果&#xff1a;
四、Simple DateFormat格式化代码
指定时间格式使用一个时间模式字符串。在这个模式中&#xff0c;所有ASCII字母被保留为模式字母&#xff0c;它们被定义为如下&#xff1a;
字符 | 描述 | 例子 |
---|---|---|
G | 时代指示符 | AD |
y | 四位数的某年 | 2001 |
M | 一年中的某月 | July or 07 |
d | 一月中的某日 | 10 |
h | A.M./P.M. (1~12)的某小时 | 12 |
H | 一天 (0~23)中的某小时 | 22 |
m | 一小时中的某分钟 | 30 |
s | 一分钟中的某秒 | 55 |
S | 毫秒 | 234 |
E | 一周中的某天 | Tuesday |
D | 一年中的某天 | 360 |
F | 一月中的一周的某天 | 2 (second Wed. in July) |
w | 一年中的某周 | 40 |
W | 一月中的某周 | 1 |
a | A.M./P.M.标记 | PM |
k | 一天(1~24)中的某小时 | 24 |
K | A.M./P.M. (0~11)的某小时 | 10 |
z | 时区 | Eastern Standard Time |
&#39; | 消逝的文本 | Delimiter |
" | 单引号 | &#96; |
对于一个用不变且有效的方法来操作日期的完整清单&#xff0c;可以参考标准的Java文档。
测试工程&#xff1a;https://github.com/easonjim/5_java_example/tree/master/jspbasics/test12