Date et heure actuelles JSP

โšก Rรฉsumรฉ intelligent

La gestion des dates JSP repose sur le noyau simple JavaAinsi, la classe java.util.Date et ses constructeurs peuvent รชtre appelรฉs directement depuis un scriptlet ou une balise d'expression pour afficher la date et l'heure actuelles sur une page.

  • (I.e. Avantage: Chaque mรฉthode de base Java reste disponible ร  l'intรฉrieur d'une page JSP sans configuration supplรฉmentaire.
  • โ˜‘๏ธ Constructeurs: Date() renvoie le moment actuel, tandis que Date(long) reconstruit un moment ร  partir des millisecondes รฉcoulรฉes depuis 1970.
  • โœ… Mรฉthodologie: Les fonctions after, before, compareTo, equals, getTime, setTime et toString couvrent la plupart des opรฉrations de comparaison.
  • ๐Ÿงช Balise d'expression : Une simple balise d'expression permet d'imprimer directement l'objet date dans le code HTML gรฉnรฉrรฉ.
  • ๏ธ Mise en page: SimpleDateFormat et la balise JSTL formatDate contrรดlent prรฉcisรฉment l'apparence de la valeur.
  • (I.e. API moderne : Les classes java.time telles que LocalDateTime remplacent les anciennes mรฉthodes Date marquรฉes comme obsolรจtes.

Date et heure actuelles JSP

Gestion des dates JSP

Le principal avantage de JSP est que toutes les mรฉthodes du noyau Java peut รชtre utilisรฉ dans JSP.

Dans cette section, nous utiliserons le Date classe de la java.util package, qui contient ร  la fois une date et une heure dans un seul objet. La classe est disponible sur chaque JSP La page s'affiche dรจs que le package est importรฉ avec une directive de page.

Il prend en charge deux constructeurs :

Constructeur Ce qu'il fait
Date() Elle nous donne la date et l'heure actuelles.
Date(long millisec) Cette fonction prend en paramรจtre le nombre de millisecondes รฉcoulรฉes depuis le 1er janvier 1970.

Le Date Cette classe expose รฉgalement les mรฉthodes listรฉes ci-dessous. Java Les types de retour primitifs sont รฉcrits en minuscules, comme ils apparaissent dans le Java API.

Mรฉthode Description
boolean after(Date date) Elle indique si cette date est postรฉrieure au paramรจtre de date donnรฉ.
boolean before(Date date) Elle indique si cette date est antรฉrieure ร  la date spรฉcifiรฉe.
Object clone() Cela crรฉe une copie de l'objet date.
int compareTo(Date date) Il compare l'objet de classe date avec un autre.
int compareTo(Object date) Elle compare un objet de la classe objet avec un autre. Cette surcharge appartient ร  l'API prรฉ-gรฉnรฉriques ; actuelle Java expose uniquement compareTo(Date).
boolean equals(Object date) Il vรฉrifie si deux objets de date sont รฉgaux.
long getTime() Il rรฉcupรจre le temps en millisecondes depuis le 1er janvier 1970.
int hashCode() Il rรฉcupรจre le code de hachage de la date donnรฉe.
void setTime(long time) Elle dรฉfinit l'heure de l'objet date donnรฉ.
String toString() Il convertit l'objet date en un objet chaรฎne de caractรจres.

ร€ noter: les accesseurs de champ de cette classe, tels que getYear(), getMonth() et toLocaleString()Ces mรฉthodes sont obsolรจtes depuis JDK 1.1. La classe elle-mรชme fonctionne toujours, mais le nouveau code doit utiliser Calendar, DateFormatou de la java.time Les cours sont dรฉcrits plus bas sur cette page.

Exemple : Afficher la date et lโ€™heure actuelles dans une JSP

Exemple :

Dans cet exemple, nous rรฉcupรฉrons la date et l'heure actuelles ร  l'aide d'un objet date.

<%@ 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>

Explication du code :

Code Ligne 11: Nous utilisons l'objet date pour rรฉcupรฉrer la date et l'heure actuelles.

ร‰quivalent moderne : Le code ci-dessus est conservรฉ exactement tel que publiรฉ. toLocaleString() a รฉtรฉ remplacรฉ par DateFormat.format(Date date) ร  partir de JDK 1.1, une page actuelle afficherait donc : <%= java.text.DateFormat.getDateTimeInstance().format(new java.util.Date()) %> au lieu. le <%= %> La balise d'expression elle-mรชme reste inchangรฉe.

Lorsque vous exรฉcutez le code ci-dessus, vous obtenez le rรฉsultat suivant.

Affichage dans le navigateur de la page JSP affichant la date et l'heure actuelles

Sortie :

Nous rรฉcupรฉrons la date et l'heure actuelles.

Comment formater la date et l'heure en JSP

Impression d'un Date L'objet renvoie directement le rรฉsultat des paramรจtres rรฉgionaux par dรฉfaut, ce qui correspond rarement au format requis par une page. Deux approches permettent de contrรดler la sortie.

Le premier conserve la logique dans Java et utilise SimpleDateFormat, oรน chaque lettre du motif reprรฉsente une partie de la valeur.

<%@ 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 %>
Lettre modรจle Sens Exemple
yyyy Annรฉe ร  quatre chiffres 2026
MM Numรฉro du mois 07
dd Jour du mois 29
HH Heure, horloge de 24 heures 18
mm Minutes 45
ss Sec 02

La deuxiรจme approche permet de garder la page exempte de Java et utilise ร  la place la bibliothรจque de formatage JSTL, qui se combine bien avec les autres balises d'action 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" />

Le uri La valeur affichรฉe ci-dessus correspond au format JSTL 3.0 utilisรฉ par Jakarta EE 10 et versions ultรฉrieures. Les pages exรฉcutรฉes sur un conteneur plus ancien utilisent toujours ce format. http://java.sun.com/jsp/jstl/fmtet les conteneurs continuent d'accepter l'ancien URI pour des raisons de compatibilitรฉ. type sรฉlection d'attributs date, time, both, tandis que dateStyle, timeStyle et timeZone affiner le rรฉsultat.

Gestion des dates avec l'API java.time dans JSP

Java 8 a introduit le java.time ce logiciel est dรฉsormais recommandรฉ pour la gestion des dates. Java du code, y compris une page JSP. Contrairement ร  DateCes classes sont immuables et compatibles avec le multithreading, ce qui permet de partager un seul formateur en toute sรฉcuritรฉ entre plusieurs requรชtes.

<%@ 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) %>

Choisissez la classe qui correspond aux besoins rรฉels de la page :

  • LocalDate โ€” une date sans heure, comme une date de naissance.
  • LocalTime โ€” une heure sans date prรฉcise, comme une heure d'ouverture.
  • LocalDateTime โ€” une date et une heure sans fuseau horaire.
  • ZonedDateTime โ€” une date et une heure liรฉes ร  un fuseau horaire, par exemple ZoneId.of("Asia/Kolkata").
  • Instant โ€” un horodatage machine, la correspondance la plus proche de ce que getTime() rรฉsultats.

Il n'est pas nรฉcessaire de rรฉรฉcrire le code existant en une seule fois, car Date.from(instant) et date.toInstant() convertir entre les deux API.

Erreurs courantes de gestion des dates dans JSP

Une date qui s'affiche correctement sur un poste de dรฉveloppement peut nรฉanmoins รชtre erronรฉe en production. Les erreurs ci-dessous expliquent la plupart de ces signalements.

  • Importation manquante : grรขce ร  Date sans <%@ page import="java.util.*" %> La compilation รฉchoue ร  moins que le fichier soit entiรจrement qualifiรฉ. java.util.Date est รฉcrit en toutes lettres, comme le fait l'exemple sur cette page.
  • Lettres du modรจle incorrect : mm est de quelques minutes et MM cela prend des mois, et DD Il s'agit du jour de l'annรฉe et non du jour du mois.
  • Fuseau horaire du serveur : new Date() reflรจte l'horloge du serveur, et non celle du visiteur. timeZone sur la balise de formatage lorsque le public se trouve ailleurs.
  • Partage d'un format de date simple : Cette classe n'est pas thread-safe ; une instance statique partagรฉe entre plusieurs requรชtes peut donc renvoyer des rรฉsultats corrompus. Crรฉez-en une par requรชte, ou utilisez DateTimeFormatter.
  • Page vide aprรจs la mise ร  jour : Un conteneur sur Jakarta EE 10 rejette l'ancien javax Les fichiers JSTL sont des fichiers jar, donc la balise de formatage s'affiche littรฉralement tant que les artefacts Jakarta ne sont pas en place.
  • Mise en forme d'une chaรฎne de caractรจres : une valeur extraite d'un paramรจtre de requรชte est du texte et doit รชtre analysรฉe avec parse() avant que toute mรฉthode de datation ne l'accepte.

FAQ

java.util. Ajouter <%@ page import="java.util.*" %> en haut de la page, ou รฉcrivez la qualification complรจte java.util.Date ร  l'intรฉrieur de la balise d'expression, comme le fait l'exemple sur cette page.

Les assistants IA peuvent traduire un format de texte en langage clair et convertir un ancien document. Date extrait dans java.timeet signalez un problรจme de sรฉcuritรฉ des threads dans un formateur partagรฉ. Testez la suggestion, car une lettre de modรจle incorrecte compile toujours sans problรจme.

Oui. Copilote GitHub Complรจte les scriptlets et les directives de taglib ร  partir d'un commentaire. Consultez le JSTL. uri il produit, puisqu'il utilise frรฉquemment par dรฉfaut l'ancien java.sun.com valeur plutรดt que celle de Jakarta.

new Date() Lit l'horloge et le fuseau horaire par dรฉfaut du serveur hรฉbergeant la page. Indiquez explicitement le fuseau horaire au formateur, ou effectuez la conversion cรดtรฉ client, si l'heure locale du visiteur est dรฉterminante.

getTime() renvoie un long: les millisecondes รฉcoulรฉes depuis le 1er janvier 1970. toString() Renvoie une chaรฎne de caractรจres lisible construite ร  partir des paramรจtres rรฉgionaux par dรฉfaut. Stocke le nombre, affiche la chaรฎne.

Non. La classe reste prise en charge, mais la plupart de ses accesseurs de champs sont obsolรจtes depuis JDK 1.1. Le nouveau code devra utiliser java.time et Date.from() fait le lien entre les deux API.

Oui. Dรฉclarez l'objet avec <jsp:useBean> et le rendre avec JSTL <fmt:formatDate> Balise. Aucun scriptlet n'est requis, ce qui rend le balisage lisible et plus facile ร  maintenir.

La balise d'expression <%= %>Tout ce qu'il contient est รฉvaluรฉ et son toString() Le rรฉsultat est inscrit dans la rรฉponse, ce qui explique comment la page d'exemple affiche la date sur une seule ligne.

Rรฉsumez cet article avec :