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 :