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.
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.
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 exempleZoneId.of("Asia/Kolkata").Instantโ un horodatage machine, la correspondance la plus proche de ce quegetTime()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 ร
Datesans<%@ page import="java.util.*" %>La compilation รฉchoue ร moins que le fichier soit entiรจrement qualifiรฉ.java.util.Dateest รฉcrit en toutes lettres, comme le fait l'exemple sur cette page. - Lettres du modรจle incorrect :
mmest de quelques minutes etMMcela prend des mois, etDDIl 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.timeZonesur 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
javaxLes 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.

