Текущая дата и время JSP

⚡ Умное резюме

Обработка дат в JSP основана на стандартном ядре библиотеки. JavaТаким образом, класс java.util.Date и его конструкторы можно вызывать непосредственно из скриптлета или тега выражения для вывода текущей даты и времени на страницу.

  • 🔘 Преимущество: Каждый метод ядра Java Остается доступным внутри JSP-страницы без дополнительной настройки.
  • ☑️ Конструкторы: Функция Date() возвращает текущий момент времени, а Date(long) восстанавливает момент времени, начиная с миллисекунд, прошедших с 1970 года.
  • Методы: Функции after, before, compareTo, equals, getTime, setTime и toString охватывают большую часть операций сравнения.
  • 🧪 Тег выражения: Один тег выражения выводит объект даты непосредственно в сгенерированный HTML-код.
  • 🇧🇷 Форматирование: Метод SimpleDateFormat и тег formatDate из JSTL точно определяют, как отображается значение.
  • 📊 Современный API: Классы java.time, такие как LocalDateTime, заменяют старые методы класса Date, помеченные как устаревшие.

Текущая дата и время JSP

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

Главное преимущество JSP заключается в том, что все методы ядра Java Может использоваться в JSP.

В этом разделе мы будем использовать Date класс java.util пакет, который хранит дату и время в одном объекте. Класс доступен в каждом JSP страница сразу после импорта пакета с директивой page.

Он поддерживает два конструктора:

Конструктор Что она делает
Date() Это позволяет нам узнать текущую дату и время.
Date(long millisec) Для этого требуется параметр в миллисекундах, прошедших с 1 января 1970 года.

Date Этот класс также предоставляет доступ к перечисленным ниже методам. Java Возвращаемые значения примитивных типов записываются строчными буквами, именно так они и отображаются в... Java API.

Способ доставки Описание
boolean after(Date date) Это указывает, приходится ли данная дата на период после указанного параметра даты.
boolean before(Date date) Это указывает, приходится ли данная дата на период до указанного параметра даты.
Object clone() Это создаёт копию объекта даты.
int compareTo(Date date) Эта функция сравнивает объект класса «дата» с другим объектом этого класса.
int compareTo(Object date) Он сравнивает объект класса с другим объектом. Эта перегрузка относится к API до появления обобщений; текущая версия Java раскрывает только compareTo(Date).
boolean equals(Object date) Эта функция проверяет, равны ли два объекта даты.
long getTime() Она считывает время в миллисекундах с 1 января 1970 года.
int hashCode() Она извлекает хеш-код заданной даты.
void setTime(long time) Эта функция устанавливает время для заданного объекта даты.
String toString() Эта функция преобразует объект даты в строковый объект.

Примечание: методы доступа к полям этого класса, такие как getYear(), getMonth() и toLocaleString()Устарели начиная с JDK 1.1. Сам класс по-прежнему работает, но в новом коде ожидается его использование. Calendar, DateFormat, или java.time Описание занятий приведено ниже на этой странице.

Пример: Отображение текущей даты и времени в JSP-странице.

Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.

В этом примере мы получаем текущую дату и время, используя объект даты.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ page import="java.util.*" %>
<!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=ISO-8859-1">
<title>Guru current Date</title>
</head>
<body>
Today's date: <%= (new java.util.Date()).toLocaleString()%>
</body>
</html>

Расшифровка кода:

Code Линия 11: Мы используем объект даты для получения текущей даты и времени.

Современный эквивалент: Приведённый выше код сохраняется в точно таком виде, в каком он был опубликован. toLocaleString() был заменен на DateFormat.format(Date date) начиная с JDK 1.1, поэтому на текущей странице будет написано следующее: <%= java.text.DateFormat.getDateTimeInstance().format(new java.util.Date()) %> вместо. <%= %> Сам тег выражения остаётся неизменным.

Когда вы выполните приведенный выше код, вы получите следующий результат.

Вывод JSP-страницы в браузере: отображение текущей даты и времени.

Выход:

Мы получаем текущую дату и время.

Как отформатировать дату и время в JSP

Печать Date Объект напрямую возвращает то, что выдает локаль по умолчанию, что редко совпадает с форматом, необходимым для страницы. Существует два подхода к управлению выводом.

Первый вариант сохраняет логику. Java и использует SimpleDateFormatгде каждая буква в шаблоне обозначает одну часть значения.

<%@ page import="java.util.*, java.text.*" %>
<%
    SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String today = fmt.format(new Date());
%>
Today's date: <%= today %>
Образец письма Смысл Пример
yyyy Четырехзначный год 2026
MM Номер месяца 07
dd День месяца 29
HH Часовые, 24-часовые часы 18
mm Минут 45
ss Секунд 02

Второй подход позволяет избежать использования лишнего контента на странице. Java вместо этого используется код и библиотека форматирования JSTL, которая хорошо сочетается с другими компонентами. JSP-теги действий.

<%@ taglib prefix="fmt" uri="jakarta.tags.fmt" %>
<jsp:useBean id="now" class="java.util.Date" />
<fmt:formatDate value="${now}" pattern="yyyy-MM-dd HH:mm:ss" />

uri Указанное выше значение соответствует формату JSTL 3.0, используемому в Jakarta EE 10 и более поздних версиях. Страницы, работающие в более старых контейнерах, по-прежнему используют этот формат. http://java.sun.com/jsp/jstl/fmtИ контейнеры продолжают принимать старый URI для обеспечения совместимости. type выбор атрибутов date, time или both, В то время dateStyle, timeStyle и timeZone Уточните результат.

Работа с датами с помощью API java.time в JSP

Java 8 ввел java.time пакет, и теперь это рекомендуемый способ работы с датами в любом пакете. Java код, включая JSP-страницу. В отличие от DateЭти классы неизменяемы и потокобезопасны, поэтому один и тот же форматтер можно безопасно использовать совместно в разных запросах.

<%@ page import="java.time.*, java.time.format.*" %>
<%
    LocalDateTime now = LocalDateTime.now();
    DateTimeFormatter f = DateTimeFormatter.ofPattern("dd MMM yyyy HH:mm");
%>
Today's date: <%= f.format(now) %>

Выберите класс, соответствующий реальным потребностям страницы:

  • LocalDate — дата без указания времени, например, дата рождения.
  • LocalTime — время без указания даты, например, час работы.
  • LocalDateTime — дата и время без указания часового пояса.
  • ZonedDateTime — например, дата и время, привязанные к определенному часовому поясу. ZoneId.of("Asia/Kolkata").
  • Instant — машинная метка времени, наиболее близкое соответствие тому, что getTime() возвращается.

Существующий код не нужно переписывать за один раз, потому что Date.from(instant) и date.toInstant() Преобразование между двумя API.

Распространенные ошибки обработки дат в JSP

Дата, которая корректно отображается на компьютере разработчика, может оказаться неверной в рабочей среде. Большинство таких сообщений об ошибках обусловлены перечисленными ниже недостатками.

  • Отсутствует импорт: через Date без <%@ page import="java.util.*" %> Не удается выполнить компиляцию, если не указан полностью квалифицированный специалист. java.util.Date написано так, как показано в примере на этой странице.
  • Неправильный шаблон букв: mm это минуты и MM это месяцы, и DD Это день года, а не день месяца.
  • Часовой пояс сервера: new Date() Отражает время сервера, а не посетителя. Установить timeZone в теге форматирования, когда аудитория находится в другом месте.
  • Совместное использование SimpleDateFormat: Класс не является потокобезопасным, поэтому статический экземпляр, используемый несколькими запросами, может возвращать искаженный результат. Создавайте отдельный экземпляр для каждого запроса или используйте другой подход. DateTimeFormatter.
  • Пустая страница после обновления: Контейнер в Джакарте EE 10 отказывается принимать старый javax JSTL-файлы, поэтому тег форматирования отображается как обычный текст до тех пор, пока не будут установлены необходимые компоненты Jakarta.
  • Форматирование строки: Значение, полученное из параметра запроса, представляет собой текст и должно быть проанализировано с помощью parse() Этот параметр будет принят любым способом определения даты.

Часто задаваемые вопросы (FAQ)

java.util, добавлять <%@ page import="java.util.*" %> вверху страницы или напишите полное квалифицированное имя. java.util.Date внутри тега выражения, что и показано в примере на этой странице.

Искусственный интеллект может переводить шаблон формата на простой английский язык, преобразовывать устаревшие данные. Date фрагмент в java.timeи указать на проблему потокобезопасности в общем форматтере. Проверьте предложение, поскольку неправильная буква шаблона всё равно компилируется без ошибок.

Да. Второй пилот GitHub Дополняет скриптлеты и директивы taglib из комментария. Проверьте JSTL. uri это приводит к результатам, поскольку часто по умолчанию используется более старая версия. java.sun.com ценность, а не джакартская.

new Date() Считывает часы и зону по умолчанию сервера, на котором запущена страница. Передайте явную зону в форматировщик или выполните преобразование на стороне клиента, если важно местное время посетителя.

getTime() возвращает long: количество миллисекунд, прошедших с 1 января 1970 года. toString() Возвращает читаемую строку, сформированную на основе локали по умолчанию. Сохраняет число, отображает строку.

Нет. Класс по-прежнему поддерживается, но большинство методов доступа к его полям содержат предупреждение об устаревании, начиная с JDK 1.1. Ожидается, что новый код будет использовать... java.time и Date.from() соединяет два API.

Да. Объявите объект с помощью <jsp:useBean> и отобразить его с помощью JSTL. <fmt:formatDate> Тег. Скриптлет не требуется, что делает разметку читаемой и упрощает ее сопровождение.

Тег выражения <%= %>. Все, что в нем содержится, оценивается, и его toString() Результат записывается в ответ, именно так на примере страницы дата отображается в одной строке.

Подведем итог этой публикации следующим образом: