Servlet Gestion des dates

L'un des avantages les plus importants de l'utilisation des Servlets est que vous pouvez utiliser la plupart des méthodes disponibles dans le cœur de Java. Ce chapitre expliquera le paquetjava.utilfourni par Java et sa classeDate, qui encapsule la date et l'heure actuelles.

La classe Date prend en charge deux constructeurs. Le premier constructeur initialise un objet avec la date et l'heure actuelles.

Date( )

Le constructeur suivant accepte un paramètre qui est égal au nombre de millisecondes écoulées depuis minuit, le 1er janvier 1970.

Date(long millisec)

Une fois que vous disposez d'un objet Date utilisable, vous pouvez appeler l'une des méthodes prises en charge suivantes pour utiliser la date :

NuméroMetode & Deskripsi
1boolean after(Date date)
Renvoie true si la date contenue dans l'objet Date invoqué est postérieure à la date spécifiée par date, sinon renvoie false.
2boolean before(Date date)
Renvoie true si la date contenue dans l'objet Date invoqué est antérieure à la date spécifiée par date, sinon renvoie false.
3Object clone( )
Duplique l'objet Date appelant.
4int compareTo(Date date)
Compare la valeur de l'objet appelant avec la valeur de date. Renvoie 0 si les deux valeurs sont égales. Renvoie une valeur négative si l'objet appelant est antérieur à date. Renvoie une valeur positive si l'objet appelant est postérieur à date.
5int compareTo(Object obj)
Si obj est de la classe Date, l'opération est équivalente à compareTo(Date). Sinon, elle lève une ClassCastException.
6boolean equals(Object date)
Renvoie true si l'heure et la date contenues dans l'objet Date invoqué sont les mêmes que celles spécifiées par date, sinon renvoie false.
7long getTime( )
Renvoie le nombre de millisecondes écoulées depuis le 1er janvier 1970.
8int hashCode( )
Renvoie un code de hachage pour l'objet appelant.
9void setTime(long time)
Définit l'heure et la date spécifiées par time, qui représente le temps écoulé depuis minuit, le 1er janvier 1970 (en millisecondes).
10String toString( )
Convertit l'objet Date appelant en chaîne et renvoie le résultat.

Obtenir la date et l'heure actuelles

Obtenir la date et l'heure actuelles dans un Java Servlet est très facile. Vous pouvez utiliser la méthodetoString()d'un simple objet Date pour afficher la date et l'heure actuelles, comme indiqué ci-dessous :

package com.example.test;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class CurrentDate
 */
@WebServlet("/CurrentDate")
public class CurrentDate extends HttpServlet {
    private static final long serialVersionUID = 1L;
   
    public CurrentDate() {
        super();
    }
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
          String title = "显示当前的日期和时间";
        Date date = new Date();
        String docType = "<!DOCTYPE html> \n";
          out.println(docType +
            "<html>\n" +
            "<head><title>" + title + "</title></head>\n" +
            "<body bgcolor=\"#F0F0F0\">\n" +
            "<h1 align=\"center\">" + title + "</h1>\n" +
            "<h2 align=\"center\">" + date.toString() + "</h2>\n" +
            "</body></html>");
    }

}

Maintenant, compilons le Servlet ci-dessus et créons l'entrée appropriée dans le fichier web.xml :

<?xml version="1.0" encoding="UTF-8"?>
<web-app>
  <servlet>
    <servlet-name>CurrentDate</servlet-name>
    <servlet-class>com.example.test.CurrentDate</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>CurrentDate</servlet-name>
    <url-pattern>/TomcatTest/CurrentDate</url-pattern>
  </servlet-mapping>
</web-app>

Ensuite, invoquez le Servlet en accédant à http://localhost:8080/TomcatTest/CurrentDate. Cela produira le résultat suivant :

Essayez d'actualiser l'URL http://localhost:8080/TomcatTest/CurrentDate. Chaque fois que vous actualisez après quelques secondes, vous remarquerez une différence dans l'heure affichée.

Comparaison de dates

Comme mentionné ci-dessus, vous pouvez utiliser toutes les méthodes Java disponibles dans un Servlet. Si vous devez comparer deux dates, voici les méthodes :

  • Vous pouvez utiliser getTime() pour obtenir le temps écoulé depuis minuit, le 1er janvier 1970 (en millisecondes) pour les deux objets, puis comparer ces deux valeurs.
  • Vous pouvez utiliser les méthodes before(), after() et equals(). Comme le 12 vient avant le 18 dans un mois, par exemple, new Date(99, 2, 12).before(new Date(99, 2, 18)) renvoie true.
  • Vous pouvez utiliser la méthode compareTo(), qui est définie par l'interface Comparable et implémentée par Date.

Utiliser SimpleDateFormat pour formater les dates

SimpleDateFormat est une classe concrète pour formater et analyser des dates en tenant compte de la locale. SimpleDateFormat vous permet de choisir n'importe quel modèle de formatage de date et d'heure défini par l'utilisateur.

Modifions l'exemple ci-dessus comme suit :

package com.example.test;

import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class CurrentDate
 */
@WebServlet("/CurrentDate")
public class CurrentDate extends HttpServlet {
    private static final long serialVersionUID = 1L;
   
    public CurrentDate() {
        super();
    }
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/html;charset=UTF-8");
        
        PrintWriter out = response.getWriter();
        String title = "显示当前的日期和时间";
        Date dNow = new Date( );
        SimpleDateFormat ft = 
                new SimpleDateFormat ("yyyy.MM.dd  hh:mm:ss E a ");
        String docType = "<!DOCTYPE html> \n";
        out.println(docType +
            "<html>\n" +
            "<head><title>" + title + "</title></head>\n" +
            "<body bgcolor=\"#F0F0F0\">\n" +
            "<h1 align=\"center\">" + title + "</h1>\n" +
            "<h2 align=\"center\">" + ft.format(dNow) + "</h2>\n" +
            "</body></html>");
    }

}

Compilez à nouveau la Servlet ci-dessus, puis invoquez-la en accédant à http://localhost:8080/TomcatTest/CurrentDate. Cela produira le résultat suivant :


Codes de format du format de date simple

Utilisez des chaînes de modèle d'heure pour spécifier le format de l'heure. Dans ce mode, toutes les lettres ASCII sont réservées en tant que lettres de modèle, définies comme suit :

CaractèreDescriptionExemple
GIndicateur d'èreAD
yAnnée représentée par quatre chiffres2001
MMois dans l'annéeJuillet ou 07
dJour dans le mois10
hHeure avec A.M./P.M. (1-12)12
HHeure dans la journée (0-23)22
mMinute dans l'heure30
sSeconde dans la minute55
SMilliseconde234
EJour de la semainemardi
DJour de l'année360
FSemaine du mois2 (deuxième mercredi de juillet)
wSemaine de l'année40
WSemaine dans le mois1
aMarqueur A.M./P.M.PM
kHeure dans la journée (1-24)24
KHeure avec A.M./P.M. (0-11)10
zFuseau horaireHeure normale de l'Est
'Échappement pour le texteDélimiteur
"Guillemet simple`

Pour une liste complète des méthodes de gestion des dates disponibles, vous pouvez consulter la documentation Java standard.

Autres extensions