JSP处理日期

在本章中,我们将讨论如何处理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 月份 July07
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文档。


上一篇:JSP上传文件

下一篇:JSP页面重定向

关注微信小程序
程序员编程王-随时随地学编程

扫描二维码
程序员编程王

扫一扫关注最新编程教程