Servlets - Fecha de manipulación
Una de las ventajas más importantes de usar Servlet es que puede usar la mayoría de los métodos disponibles en el núcleo de Java. Este tutorial lo llevará a través de Java proporcionadoDate clase que está disponible en java.util paquete, esta clase encapsula la fecha y hora actuales.
La clase Date admite dos constructores. El primer constructor inicializa el objeto con la fecha y hora actuales.
Date( )
El siguiente constructor acepta un argumento que equivale al número de milisegundos que han transcurrido desde la medianoche del 1 de enero de 1970.
Date(long millisec)
Una vez que tenga un objeto Fecha disponible, puede llamar a cualquiera de los siguientes métodos de soporte para jugar con las fechas:
No Señor. | Métodos y descripción |
---|---|
1 | boolean after(Date date) Devuelve verdadero si el objeto Date que invoca contiene una fecha posterior a la especificada por fecha; de lo contrario, devuelve falso. |
2 | boolean before(Date date) Devuelve verdadero si el objeto Date que invoca contiene una fecha anterior a la especificada por fecha; de lo contrario, devuelve falso. |
3 | Object clone( ) Duplica el objeto Date que invoca. |
4 | int compareTo(Date date) Compara el valor del objeto que invoca con el de la fecha. Devuelve 0 si los valores son iguales. Devuelve un valor negativo si el objeto que invoca es anterior a la fecha. Devuelve un valor positivo si el objeto que invoca es posterior a la fecha. |
5 | int compareTo(Object obj) Funciona de forma idéntica a compareTo (Date) si obj es de la clase Date. De lo contrario, arroja una ClassCastException. |
6 | boolean equals(Object date) Devuelve verdadero si el objeto de fecha que invoca contiene la misma hora y fecha que el especificado por fecha; de lo contrario, devuelve falso. |
7 | long getTime( ) Devuelve el número de milisegundos que han transcurrido desde el 1 de enero de 1970. |
8 | int hashCode( ) Devuelve un código hash para el objeto que lo invoca. |
9 | void setTime(long time) Establece la fecha y la hora especificadas por la hora, que representa un tiempo transcurrido en milisegundos desde la medianoche del 1 de enero de 1970. |
10 | String toString( ) Convierte el objeto Date que invoca en una cadena y devuelve el resultado. |
Obtener fecha y hora actual
Es muy fácil obtener la fecha y hora actual en Java Servlet. Puede usar un objeto Date simple con el método toString () para imprimir la fecha y hora actual de la siguiente manera:
// 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>"
);
}
}
Ahora compilemos el servlet anterior y creemos las entradas apropiadas en web.xml y luego llamemos a este servlet usando la URL http: // localhost: 8080 / CurrentDate. Esto produciría el siguiente resultado:
Display Current Date & Time
Mon Jun 21 21:46:49 GMT+04:00 2010
Intente actualizar la URL http: // localhost: 8080 / CurrentDate y encontrará la diferencia en segundos cada vez que actualice.
Comparación de fechas
Como mencioné anteriormente, puede usar todos los métodos Java disponibles en su Servlet. En caso de que necesite comparar dos fechas, los siguientes son los métodos:
Puede usar getTime () para obtener el número de milisegundos que han transcurrido desde la medianoche del 1 de enero de 1970 para ambos objetos y luego comparar estos dos valores.
Puede utilizar los métodos before (), after () y equals (). Debido a que el día 12 del mes es anterior al 18, por ejemplo, new Date (99, 2, 12) .before (new Date (99, 2, 18)) devuelve verdadero.
Puede utilizar el método compareTo (), que está definido por la interfaz Comparable e implementado por Date.
Formato de fecha usando SimpleDateFormat
SimpleDateFormat es una clase concreta para formatear y analizar fechas de una manera sensible al entorno local. SimpleDateFormat le permite comenzar eligiendo cualquier patrón definido por el usuario para el formato de fecha y hora.
Modifiquemos el ejemplo anterior de la siguiente manera:
// 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>"
);
}
}
Compile el servlet anterior una vez más y luego llame a este servlet usando la URL http: // localhost: 8080 / CurrentDate. Esto produciría el siguiente resultado:
Display Current Date & Time
Mon 2010.06.21 at 10:06:44 PM GMT+04:00
Códigos de formato de formato de fecha simple
Para especificar el formato de hora, utilice una cadena de patrón de tiempo. En este patrón, todas las letras ASCII se reservan como letras de patrón, que se definen de la siguiente manera:
Personaje | Descripción | Ejemplo |
---|---|---|
GRAMO | Designador de era | ANUNCIO |
y | Año en cuatro dígitos | 2001 |
METRO | Mes del año | Julio o 07 |
re | Día en mes | 10 |
h | Hora en AM / PM (1 ~ 12) | 12 |
H | Hora del día (0 ~ 23) | 22 |
metro | Minuto en hora | 30 |
s | Segundo en minuto | 55 |
S | Milisegundo | 234 |
mi | Día de la semana | martes |
re | Día del año | 360 |
F | Día de la semana en el mes | 2 (segundo miércoles de julio) |
w | Semana del año | 40 |
W | Semana en mes | 1 |
un | Marcador AM / PM | PM |
k | Hora del día (1 ~ 24) | 24 |
K | Hora en AM / PM (0 ~ 11) | 10 |
z | Zona horaria | hora estándar del Este |
' | Escape por texto | Delimitador |
" | Una frase | ' |
Para obtener una lista completa de los métodos disponibles constantes para manipular la fecha, puede consultar la documentación estándar de Java.