Servlet - Data di gestione
Uno dei vantaggi più importanti dell'utilizzo di Servlet è che è possibile utilizzare la maggior parte dei metodi disponibili nel core Java. Questo tutorial ti porterà attraverso Java fornitoDate classe disponibile in java.util pacchetto, questa classe incapsula la data e l'ora correnti.
La classe Date supporta due costruttori. Il primo costruttore inizializza l'oggetto con la data e l'ora correnti.
Date( )
Il seguente costruttore accetta un argomento che è uguale al numero di millisecondi trascorsi dalla mezzanotte del 1 gennaio 1970
Date(long millisec)
Una volta che hai a disposizione un oggetto Date, puoi chiamare uno dei seguenti metodi di supporto per giocare con le date:
Sr.No. | Metodi e descrizione |
---|---|
1 | boolean after(Date date) Restituisce true se l'oggetto Date che richiama contiene una data successiva a quella specificata da date, altrimenti restituisce false. |
2 | boolean before(Date date) Restituisce true se l'oggetto Date che richiama contiene una data precedente a quella specificata da date, altrimenti restituisce false. |
3 | Object clone( ) Duplica l'oggetto Date che richiama. |
4 | int compareTo(Date date) Confronta il valore dell'oggetto richiamante con quello di date. Restituisce 0 se i valori sono uguali. Restituisce un valore negativo se l'oggetto che richiama è precedente alla data. Restituisce un valore positivo se l'oggetto che richiama è successivo alla data. |
5 | int compareTo(Object obj) Funziona in modo identico a compareTo (Date) se obj è della classe Date. In caso contrario, genera un'eccezione ClassCastException. |
6 | boolean equals(Object date) Restituisce true se l'oggetto Date che richiama contiene la stessa ora e data di quella specificata da date, altrimenti restituisce false. |
7 | long getTime( ) Restituisce il numero di millisecondi trascorsi dal 1 gennaio 1970. |
8 | int hashCode( ) Restituisce un codice hash per l'oggetto invocante. |
9 | void setTime(long time) Imposta l'ora e la data come specificato da time, che rappresenta il tempo trascorso in millisecondi dalla mezzanotte del 1 gennaio 1970. |
10 | String toString( ) Converte l'oggetto Date che richiama in una stringa e restituisce il risultato. |
Recupero di data e ora correnti
È molto facile ottenere la data e l'ora correnti in Java Servlet. È possibile utilizzare un semplice oggetto Date con il metodo toString () per stampare la data e l'ora correnti come segue:
// Import required java libraries
import java.io.*;
import java.util.Date;
import javax.servlet.*;
import javax.servlet.http.*;
// Extend HttpServlet class
public class CurrentDate extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Set response content type
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String title = "Display Current Date & Time";
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>"
);
}
}
Ora compiliamo il servlet sopra e creiamo le voci appropriate in web.xml, quindi chiamiamo questo servlet usando l'URL http: // localhost: 8080 / CurrentDate. Ciò produrrebbe il seguente risultato:
Display Current Date & Time
Mon Jun 21 21:46:49 GMT+04:00 2010
Prova ad aggiornare l'URL http: // localhost: 8080 / CurrentDate e troverai la differenza in secondi ogni volta che aggiorni.
Confronto delle date
Come accennato in precedenza, puoi utilizzare tutti i metodi Java disponibili nel tuo Servlet. Nel caso in cui sia necessario confrontare due date, di seguito sono riportati i metodi:
È possibile utilizzare getTime () per ottenere il numero di millisecondi trascorsi dalla mezzanotte del 1 gennaio 1970 per entrambi gli oggetti e quindi confrontare questi due valori.
È possibile utilizzare i metodi before (), after () ed equals (). Poiché il 12 del mese viene prima del 18, ad esempio, new Date (99, 2, 12) .before (new Date (99, 2, 18)) restituisce true.
È possibile utilizzare il metodo compareTo (), definito dall'interfaccia Comparable e implementato da Date.
Formattazione della data utilizzando SimpleDateFormat
SimpleDateFormat è una classe concreta per la formattazione e l'analisi delle date in modo sensibile alle impostazioni locali. SimpleDateFormat consente di iniziare scegliendo qualsiasi modello definito dall'utente per la formattazione della data e dell'ora.
Modifichiamo l'esempio sopra come segue:
// Import required java libraries
import java.io.*;
import java.text.*;
import java.util.Date;
import javax.servlet.*;
import javax.servlet.http.*;
// Extend HttpServlet class
public class CurrentDate extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Set response content type
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String title = "Display Current Date & Time";
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>"
);
}
}
Compilare nuovamente il servlet sopra riportato e quindi chiamare questo servlet utilizzando l'URL http: // localhost: 8080 / CurrentDate. Ciò produrrebbe il seguente risultato:
Display Current Date & Time
Mon 2010.06.21 at 10:06:44 PM GMT+04:00
Codici di formato DateFormat semplici
Per specificare il formato dell'ora, utilizzare una stringa del modello dell'ora. In questo modello, tutte le lettere ASCII sono riservate come lettere del modello, che sono definite come segue:
Personaggio | Descrizione | Esempio |
---|---|---|
G | Designatore di epoca | ANNO DOMINI |
y | Anno in quattro cifre | 2001 |
M | Mese nell'anno | Luglio o 07 |
d | Giorno in mese | 10 |
h | Ora AM / PM (1 ~ 12) | 12 |
H | Ora nel giorno (0 ~ 23) | 22 |
m | Minuto in ora | 30 |
S | Secondo in minuto | 55 |
S | Millisecondo | 234 |
E | Giorno in settimana | martedì |
D | Giorno dell'anno | 360 |
F | Giorno della settimana nel mese | 2 (secondo mercoledì di luglio) |
w | Settimana nell'anno | 40 |
W | Settimana al mese | 1 |
un | Indicatore AM / PM | PM |
K | Ora nel giorno (1 ~ 24) | 24 |
K | Ora AM / PM (0 ~ 11) | 10 |
z | Fuso orario | Ora solare orientale |
' | Fuga per il testo | Delimitatore |
" | Virgoletta singola | " |
Per un elenco completo dei metodi disponibili costanti per manipolare la data, è possibile fare riferimento alla documentazione Java standard.