English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Обработка даты JSP

Одним из最主要的 преимуществ использования JSP является возможность использования всех Java API. В этой главе мы будем подробно рассматривать класс Date в Java, который находится в пакете java.util и封装яет текущую дату и время.

Класс Date имеет два конструктора. Первый конструктор initializes объект с текущей датой и временем.

Date( )

Второй конструктор принимает один параметр, который представляет количество миллисекунд с полуночи 1 января 1970 года до времени, которое нужно представить.

Date(long millisec)

После получения объекта Date Вы можете использовать все методы, перечисленные в таблице:

НомерМетод & Описание
                1boolean after(Date date) Возвращает true, если дата позже заданной, в противном случае возвращает false
                2boolean before(Date date) Возвращает true, если дата раньше заданной, в противном случае возвращает false
                3Object clone( ) Получение копии текущего объекта
                4int compareTo(Date date) Возвращает 0, если данные даты равны, если раньше, то возвращает отрицательное число, если позже, то возвращает положительное число
                5int compareTo(Object obj) Как и метод compareTo(Date), если obj не является объектом класса Date или его подклассом, выбрасывается исключение ClassCastException
                6boolean equals(Object date) Возвращает true, если данные даты совпадают, в противном случае возвращает false
                7long getTime( ) Возвращает количество миллисекунд с полуночи 1 января 1970 года до времени, представленного этим объектом
                8int hashCode( ) Возвращает хэш-код этого объекта
                9void setTime(long time) Использование заданных параметров для установки даты и времени, параметр time представляет количество миллисекунд, прошедших с полуночи 1 января 1970 года до time
                10String toString( ) Преобразование этого объекта в строку и возврат этой строки

    Получение текущей даты и времени

Использование JSP для программирования позволяет легко получить текущую дату и время, достаточно использовать метод toString() объекта Date, как показано ниже:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%
<%@ page import="java.io.*,java.util.*, javax.servlet.*" %>
<html>
<head>
<title> 显示当前时间与日期 </title>
</head>
<body>
<h1> 显示当前时间与日期 </h1>
<%
   Date date = new Date();
   out.print("<h2 align=\"center\">" + date.toString() + "</h2>");
%>
</body>
</html>

将上面的代码保存在 main.jsp 文件中,然后访问 http://localhost:8080/testjsp/main.jsp,运行结果如下:

Показать текущее время и дату
Sat Jun 25 17:54:34 CST 2019

刷新 http://localhost:8080/testjsp/main.jsp,就可以发现每次刷新所得到的秒数都不相同。

日期比较

就像我在开头所提到的,您可以在JSP脚本中使用任何Java方法。如果您想要比较两个日期,

可以参照下面的方法来做:

  •             使用getTime()方法得到毫秒数,然后比较毫秒数就行了。

  •             使用before(),after(),equals()方法。比如,new Date(99,2,12).before(new Date(99,2,18))返回true。

  •             使用compareTo()方法,这个方法在Comparable接口中定义,在Date中实现。

    使用SimpleDateFormat格式化日期

SimpleDateFormat使用一种地区敏感的方式来格式化和解析日期,它允许您使用自定义的模式来格式化日期和时间。

对CurrentDate.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.*" %>
<html>
<head>
<title> 显示当前时间与日期 </title>
</head>
<body>
<h1> 显示当前时间与日期 </h1>
<%
   Date dNow = new Date();
   SimpleDateFormat ft = 
   new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   out.print("<h2 align=\"center\">" + ft.format(dNow) + "</h2>");
%>
</body>
</html>

Перекомпилировать main.jsp, затем посетить http://localhost:8080/testjsp/main.jsp,можно получить следующий результат:

Показать текущее время и дату
2019-06-25 17:57:53

Форматные коды SimpleDateFormat

Чтобы определить строку шаблона формата, необходимо использовать форматные коды, перечисленные в таблице ниже:

СимволОписаниеПример
                G                Идентификатор эпохи                AD
                y                Четырёхзначный год                2001
                M                Месяц                July или 07
                d                День                10
                h                12-часовой формат, A.M./P.M. (1~12)                12
                H                24-часовой формат                22
                m                Минуты                30
                s                Секунды                55
                S                Миллисекунды                234
                E                Неделя                Tuesday
                D                День в году                360
                F                День в неделе месяца                2 (вторник в июле)
                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
                '                Разделитель текста                Делimiter
                "                Одинарная кавычка                `

Более подробная информация о классе Date см. в документации Java API.