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éro | Metode & Deskripsi |
|---|---|
| 1 | boolean 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. |
| 2 | boolean 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. |
| 3 | Object clone( ) Duplique l'objet Date appelant. |
| 4 | int 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. |
| 5 | int compareTo(Object obj) Si obj est de la classe Date, l'opération est équivalente à compareTo(Date). Sinon, elle lève une ClassCastException. |
| 6 | boolean 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. |
| 7 | long getTime( ) Renvoie le nombre de millisecondes écoulées depuis le 1er janvier 1970. |
| 8 | int hashCode( ) Renvoie un code de hachage pour l'objet appelant. |
| 9 | void 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). |
| 10 | String 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ère | Description | Exemple |
|---|---|---|
| G | Indicateur d'ère | AD |
| y | Année représentée par quatre chiffres | 2001 |
| M | Mois dans l'année | Juillet ou 07 |
| d | Jour dans le mois | 10 |
| h | Heure avec A.M./P.M. (1-12) | 12 |
| H | Heure dans la journée (0-23) | 22 |
| m | Minute dans l'heure | 30 |
| s | Seconde dans la minute | 55 |
| S | Milliseconde | 234 |
| E | Jour de la semaine | mardi |
| D | Jour de l'année | 360 |
| F | Semaine du mois | 2 (deuxième mercredi de juillet) |
| w | Semaine de l'année | 40 |
| W | Semaine dans le mois | 1 |
| a | Marqueur A.M./P.M. | PM |
| k | Heure dans la journée (1-24) | 24 |
| K | Heure avec A.M./P.M. (0-11) | 10 |
| z | Fuseau horaire | Heure normale de l'Est |
| ' | Échappement pour le texte | Dé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