在本章中,我们将讨论如何处理JSP中的数据。 使用JSP最重要的优点之一就是可以使用核心Java中的所有可用方法。我们将浏览java.util包中提供的Date
类; 这个类封装了当前的日期和时间。
Date
类支持两个构造函数。第一个构造函数使用当前日期和时间初始化对象。
Date( )
以下构造函数接受一个等于从1970年1月1日午夜以来经过的毫秒数的参数。
Date(long millisec)
当实现一个Date
对象后,就可以调用以下任何支持方法来操作日期 -
编号 | 方法 | 描述 |
---|---|---|
1 | boolean after(Date date) |
如果调用的Date 对象包含的日期晚于date 指定的日期,则返回true ,否则返回false 。 |
2 | boolean before(Date date) |
如果调用的Date 对象包含早于date 指定的日期,则返回true ,否则返回false 。 |
3 | Object clone( ) |
复制调用Date 对象。 |
4 | int compareTo(Date date) |
将调用对象的值与date 对应的值进行比较。 如果值相等,则返回0 。 如果调用对象早于date ,则返回负值。 如果调用对象晚于日期,则返回正值。 |
5 | int compareTo(Object obj) |
如果obj 是类Date 的对象,则与compareTo(Date) 的操作相同。 否则会引发ClassCastException 。 |
6 | boolean equals(Object date) |
如果调用的Date 对象包含与date 指定的时间和日期相同的时间和日期,则返回true ,否则返回false 。 |
7 | long getTime( ) |
返回从1970年1月1日起经过的毫秒数。 |
8 | int hashCode( ) |
返回调用对象的哈希码。 |
9 | void setTime(long time) |
设置时间指定的时间和日期,表示从1970年1月1日午夜开始的以毫秒为单位的经过时间 |
10 | String toString( ) |
将调用的Date 对象转换为字符串并返回结果。 |
为了方便演示下面的示例,我们打开Eclipse创建一个动态Web项目:HandlingDate,并在这个项目中创建对应的示例JSP页面作为演示。
获取当前日期和时间
使用JSP程序,很容易得到当前日期和时间。 可以使用Date
对象的toString()
方法的来打印当前日期和时间,如下所示:
文件:curDatetime.jsp -
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*, javax.servlet.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP获取当前时间示例</title>
</head>
<body>
<div style="margin: auto; width: 80%">
<center>
<h1>显示当前日期和时间</h1>
</center>
<%
Date date = new Date();
out.print("<h2 align = \"center\">" + date.toString() + "</h2>");
%>
</div>
</body>
</html>
编写完成上面代码后,然后部署项目,打开浏览器访问URL: http://localhost:8080/HandlingDate/curDatetime.jsp 调用此JSP。将收到以下结果 -
每次刷新时,您都会发现以秒为单位的有所变化。
日期比较
如上一节所述,可以在JSP脚本中使用所有可用的Java方法。如果需要比较两个日期,请考虑以下方法 -
- 使用
getTime()
方法来获取1970年1月1日午夜以后两个对象所经过的毫秒数,然后比较这两个值。 - 使用
before()
,after()
和equals()
方法,因为本月十二号是在18日之前; 例如,新的Date(1999,2,12).before(new Date(1999,2,18))
返回true
。 - 使用
compareTo()
方法; 该方法由Comparable
接口定义,并由Date
实现。
使用SimpleDateFormat格式化日期
SimpleDateFormat
是一个具体的类,用于以区域设置方式格式化和解析日期。SimpleDateFormat
允许从选择任何用户定义的日期时间格式的模式开始。
修改上面的例子如下 -
文件:DateFormatting.jsp -
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*"%>
<%@ page import="javax.servlet.*,java.text.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>格式化日期示例</title>
</head>
<body>
<div style="margin: auto; width: 80%">
<center>
<h1>当前时间格式化</h1>
</center>
<%
Date dNow = new Date();
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss a zzz");
out.print("<h2 align=\"center\">" + ft.format(dNow) + "</h2>");
%>
</div>
</body>
</html>
编写完成上面代码后,然后部署项目,打开浏览器访问URL: http://localhost:8080/HandlingDate/DateFormatting.jsp 调用此JSP。将收到以下结果 -
简单的日期格式格式代码
要指定时间格式,请使用时间模式字符串。 在这种模式中,所有ASCII字母都保留为模式字母,其定义如下:
字符 | 描述 | 示例 |
---|---|---|
G |
时代的标志 | AD |
y |
年份四位数 | 2019 |
M |
月份 | July 或 07 |
d |
月份中的天 | 0 |
h |
A.M./P.M.(1~12)小时格式 | 2 |
H |
小时格式(0~23) | 22 |
m |
分钟小时 | 30 |
s |
秒钟 | 55 |
S |
毫秒 | 234 |
E |
一周中的一天 | Tuesday |
D |
一年中的一天 | 360 |
F |
月份中的星期 | 2(七月第2个周三) |
w |
一年中星期数 | 40 |
W |
一个月 | |
a |
A.M./P.M.标记 | PM |
k |
小时(1~24) | 24 |
K |
A.M./P.M.(0~11)小时形式 | 0 |
z |
时区 | 东部标准时间 |
' |
逃义文本 | 分隔符 |
" |
单引号 | ` |
有关操作日期的常用可用方法的完整列表,可以参考标准Java文档。