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處理日期

每次刷新時,您都會發現以秒爲單位的有所變化。

日期比較

如上一節所述,可以在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。將收到以下結果 -
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文檔。