Date de traitement des servlets


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 noyau Java. Ce chapitre expliquera la classe Date dans le package java.util fourni par Java. Cette classe 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 ci-dessous accepte un paramètre é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, vous pouvez utiliser la date en appelant l'une des méthodes prises en charge suivantes :

Numéro de sérieMéthode et description
1
序号方法 & 描述
1boolean after(Date date)
如果调用的 Date 对象中包含的日期在 date 指定的日期之后,则返回 true,否则返回 false。
2boolean before(Date date)
如果调用的 Date 对象中包含的日期在 date 指定的日期之前,则返回 true,否则返回 false。
3Object clone( )
重复调用 Date 对象。
4int compareTo(Date date)
把调用对象的值与 date 的值进行比较。如果两个值是相等的,则返回 0。如果调用对象在 date 之前,则返回一个负值。如果调用对象在 date 之后,则返回一个正值。
5int compareTo(Object obj)
如果 obj 是 Date 类,则操作等同于 compareTo(Date)。否则,它会抛出一个 ClassCastException。
6boolean equals(Object date)
如果调用的 Date 对象中包含的时间和日期与 date 指定的相同,则返回 true,否则返回 false。
7long getTime( )
返回 1970 年 1 月 1 日以来经过的毫秒数。
8int hashCode( )
为调用对象返回哈希代码。
9void setTime(long time)
设置 time 指定的时间和日期,这表示从 1970 年 1 月 1 日午夜以来经过的时间(以毫秒为单位)。
10String toString( )
转换调用的 Date 对象为一个字符串,并返回结果。
boolean after(Date date)<🎜>
Si la date contenue dans l'objet Date appelé est postérieure à la date spécifiée par date, il renvoie vrai, sinon il renvoie faux.
2<🎜>booléen avant(Date date)<🎜>
Si la date contenue dans l'objet Date appelé est spécifiée dans date avant la date, renvoie vrai, sinon renvoie faux.
3<🎜>Object clone()<🎜>
Appelez à plusieurs reprises l'objet Date.
4<🎜>int compareTo(Date date)<🎜>
Comparez la valeur de l'objet appelant avec la valeur de date . Si les deux valeurs sont égales, 0 est renvoyé. Si l'objet appelant précède la date, une valeur négative est renvoyée. Si l'objet appelant arrive après la date, une valeur positive est renvoyée.
5<🎜>int compareTo(Object obj)<🎜>
Si obj est une classe Date, l'opération est équivalente à comparerÀ(Date). Sinon, il lève une ClassCastException.
6<🎜>booléen égal à (Date de l'objet)<🎜>
Si l'heure et la date contenues dans l'objet Date appelé sont identique à Si les dates spécifiées sont les mêmes, true est renvoyé, sinon false est renvoyé.
7<🎜>long getTime( )<🎜>
Renvoie le nombre de millisecondes écoulées depuis le 1er janvier 1970.
8<🎜>int hashCode( )<🎜>
Renvoie le code de hachage de l'objet appelant.
9<🎜>void setTime(long time)<🎜>
Régler l'heure à l'heure et à la date spécifiées, c'est-à-dire à partir de 1970 Temps écoulé (en millisecondes) depuis minuit le 1er janvier de l'année.
10<🎜>String toString()<🎜>
Convertissez l'objet Date appelé en chaîne et renvoyez le résultat.

Obtenir la date et l'heure actuelles

Obtenir la date et l'heure actuelles dans Java Servlet est très simple. Vous pouvez utiliser la méthode toString() d'un simple objet Date pour afficher la date et l'heure actuelles comme suit :

// 导入必需的 java 库
import java.io.*;
import java.util.Date;
import javax.servlet.*;
import javax.servlet.http.*;
 
// 扩展 HttpServlet 类
public class CurrentDate extends HttpServlet {
 
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
      // 设置响应内容类型
      response.setContentType("text/html");
 
      PrintWriter out = response.getWriter();
      String title = "显示当前的日期和时间";
      Date date = new Date();
      String docType =
      "<!doctype html public \"-//w3c//dtd html 4.0 " +
      "transitional//en\">\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 exécutons Créez les entrées appropriées dans le fichier web.xml, puis appelez le servlet en accédant à http://localhost:8080/CurrentDate. Cela produira le résultat suivant :

Afficher la date et l'heure actuelles

Lun. 21 juin 21:46:49 GMT+04:00 2010

显示当前的日期和时间

Mon Jun 21 21:46:49 GMT+04:00 2010

Essayez d'actualiser l'URL http://localhost:8080/CurrentDate, vous remarquerez la différence dans l'heure affichée toutes les quelques secondes.

Comparaison de dates

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

  • Vous pouvez utiliser getTime() pour obtenir le temps écoulé (en millisecondes) depuis minuit le 1er janvier 1970 pour les deux objets (unité) puis comparez les deux valeurs.

  • Vous pouvez utiliser les méthodes before( ), after( ) et equals( ). Puisque le 12 est avant le 18 d'un mois, par exemple, new Date(99, 2, 12).before(new Date (99, 2, 18)) renvoie vrai.

  • Vous pouvez utiliser la méthode compareTo(), qui est définie par l'interface Comparable et implémentée par Date.

Formatage des dates à l'aide de SimpleDateFormat

SimpleDateFormat est une classe concrète permettant de formater et d'analyser les dates en fonction des paramètres régionaux. SimpleDateFormat vous permet de choisir n'importe quel mode de formatage date-heure défini par l'utilisateur.

Modifions l'exemple ci-dessus comme suit :

// 导入必需的 java 库
import java.io.*;
import java.text.*;
import java.util.Date;
import javax.servlet.*;
import javax.servlet.http.*;
 
// 扩展 HttpServlet 类
public class CurrentDate extends HttpServlet {
 
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
      // 设置响应内容类型
      response.setContentType("text/html");
 
      PrintWriter out = response.getWriter();
      String title = "显示当前的日期和时间";
      Date dNow = new Date( );
      SimpleDateFormat ft = 
      new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
      String docType =
      "<!doctype html public \"-//w3c//dtd html 4.0 " +
      "transitional//en\">\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 appelez la servlet en accédant à http://localhost:8080/CurrentDate. Cela produira le résultat suivant :

Afficher la date et l'heure actuelles

Lun. 21/06/2010 à 22:06:44 GMT+ 04:00

显示当前的日期和时间

Mon 2010.06.21 at 10:06:44 PM GMT+04:00


Codes de format pour les formats de date simples

Utilisez une chaîne de modèle d'événement pour spécifier le format de l'heure. Dans ce mode, toutes les lettres ASCII sont réservées comme lettres de mode, qui sont définies comme suit :

字符描述实例
GEra 指示器AD
y四位数表示的年2001
M一年中的月July 或 07
d一月中的第几天10
h带有 A.M./P.M. 的小时(1~12)12
H一天中的第几小时(0~23)22
m一小时中的第几分30
s一分中的第几秒55
S毫秒234
E一周中的星期几Tuesday
D一年中的第几天360
F所在的周是这个月的第几周2 (second Wed. in July)
w一年中的第几周40
W一月中的第几周1
aA.M./P.M. 标记PM
k一天中的第几小时(1~24)24
K带有 A.M./P.M. 的小时(0~11)10
z时区Eastern Standard Time
'Escape for textDelimiter
"单引号`

Pour une liste complète des méthodes disponibles pour travailler avec les dates, vous pouvez vous référer à la documentation Java standard.