Fecha y hora actuales de JSP
⚡ Resumen inteligente
El manejo de fechas de JSP se basa en el núcleo simple. Java, por lo que la clase java.util.Date y sus constructores se pueden llamar directamente desde un scriptlet o una etiqueta de expresión para imprimir la fecha y hora actuales en una página.

Manejo de fechas JSP
La mayor ventaja de JSP es que todos los métodos del núcleo Java Se puede utilizar en JSP.
En esta sección utilizaremos el Date clase de la java.util paquete, que contiene tanto una fecha como una hora en un solo objeto. La clase está disponible en todos JSP página tan pronto como el paquete se importe con una directiva de página.
Admite dos constructores:
| Constructor | ¿Qué hace? |
|---|---|
Date() |
Nos proporciona la fecha y hora actuales. |
Date(long millisec) |
Esto requiere un parámetro de milisegundos, que es el tiempo transcurrido desde el 1 de enero de 1970. |
El Date Esta clase también expone los métodos que se enumeran a continuación. Java Los tipos de retorno primitivos se escriben en minúsculas, que es como aparecen en el Java API.
| Método | Mareas Ideales para Lecciones |
|---|---|
boolean after(Date date) |
Indica si esta fecha es posterior al parámetro de fecha especificado. |
boolean before(Date date) |
Indica si esta fecha es anterior al parámetro de fecha especificado. |
Object clone() |
Crea una copia del objeto de fecha. |
int compareTo(Date date) |
Compara el objeto de la clase de fecha con otro. |
int compareTo(Object date) |
Se compara con el objeto de la clase objeto con otro. Esta sobrecarga pertenece a la API pre-genérica; actual Java expone únicamente compareTo(Date). |
boolean equals(Object date) |
Comprueba si dos objetos de fecha son iguales. |
long getTime() |
Obtiene la hora en milisegundos desde el 1 de enero de 1970. |
int hashCode() |
Obtiene el código hash de la fecha indicada. |
void setTime(long time) |
Establece la hora del objeto de fecha dado. |
String toString() |
Convierte el objeto de fecha en un objeto de cadena. |
Nota: los accesores de campo de esta clase, como getYear(), getMonth() y toLocaleString(), han sido obsoletos desde JDK 1.1. La clase en sí todavía funciona, pero se espera que el código nuevo utilice Calendar, DateFormat, o el java.time Las clases se describen más abajo en esta página.
Ejemplo: Mostrar la fecha y hora actuales en JSP
Ejemplo:
En este ejemplo, estamos obteniendo la fecha y hora actuales utilizando un objeto de fecha.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page import="java.util.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru current Date</title> </head> <body> Today's date: <%= (new java.util.Date()).toLocaleString()%> </body> </html>
Explicación del código:
Code Línea 11: Estamos utilizando el objeto de fecha para recuperar la fecha y hora actuales.
Equivalente moderno: El código anterior se mantiene exactamente como se publicó. toLocaleString() fue reemplazado por DateFormat.format(Date date) a partir de JDK 1.1, por lo que una página actual escribiría <%= java.text.DateFormat.getDateTimeInstance().format(new java.util.Date()) %> en lugar. los <%= %> La etiqueta de expresión en sí no ha sufrido cambios.
Cuando ejecuta el código anterior, obtiene el siguiente resultado.
Salida:
Estamos obteniendo la fecha y hora actuales.
Cómo formatear la fecha y la hora en JSP
Imprimiendo un Date El objeto proporciona directamente lo que produce la configuración regional predeterminada, que rara vez es el formato que necesita una página. Dos enfoques controlan la salida.
El primero mantiene la lógica en Java y utiliza SimpleDateFormatdonde cada letra del patrón representa una parte del valor.
<%@ page import="java.util.*, java.text.*" %> <% SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String today = fmt.format(new Date()); %> Today's date: <%= today %>
| Letra de patrón | Significado | Ejemplo |
|---|---|---|
yyyy |
Año de cuatro dígitos | 2026 |
MM |
Número de mes | 07 |
dd |
Dia del mes | 29 |
HH |
Hora, reloj de 24 horas | 18 |
mm |
Minutos | 45 |
ss |
Segundos | 02 |
El segundo enfoque mantiene la página libre de Java en lugar de usar el código, utiliza la biblioteca de formato JSTL, que se combina bien con la otra. etiquetas de acción JSP.
<%@ taglib prefix="fmt" uri="jakarta.tags.fmt" %> <jsp:useBean id="now" class="java.util.Date" /> <fmt:formatDate value="${now}" pattern="yyyy-MM-dd HH:mm:ss" />
El uri El valor que se muestra arriba es el formato JSTL 3.0 utilizado por Jakarta EE 10 y versiones posteriores. Las páginas que se ejecutan en un contenedor más antiguo todavía utilizan http://java.sun.com/jsp/jstl/fmty los contenedores siguen aceptando la URI antigua por compatibilidad. type selección de atributos date, time, o both, mientras dateStyle, timeStyle y timeZone refinar el resultado.
Manejo de fechas con la API java.time en JSP
Java 8 introdujo el java.time paquete, y ahora es la forma recomendada de trabajar con fechas en cualquier Java código, incluyendo una página JSP. A diferencia de DateEstas clases son inmutables y seguras para subprocesos, por lo que un único formateador puede compartirse de forma segura entre diferentes solicitudes.
<%@ page import="java.time.*, java.time.format.*" %> <% LocalDateTime now = LocalDateTime.now(); DateTimeFormatter f = DateTimeFormatter.ofPattern("dd MMM yyyy HH:mm"); %> Today's date: <%= f.format(now) %>
Seleccione la clase que mejor se ajuste a las necesidades de la página:
LocalDate— una fecha sin hora, como una fecha de nacimiento.LocalTime— un momento sin fecha, como por ejemplo la hora de apertura.LocalDateTime— una fecha y hora sin zona horaria asociada.ZonedDateTime— una fecha y hora vinculadas a una zona, por ejemploZoneId.of("Asia/Kolkata").Instant— una marca de tiempo de la máquina, la coincidencia más cercana a lo quegetTime()devoluciones.
El código existente no tiene que reescribirse de una sola vez, porque Date.from(instant) y date.toInstant() convertir entre las dos API.
Errores comunes en el manejo de fechas en JSP
Una fecha que se imprime correctamente en una máquina de desarrollo puede ser errónea en producción. Los errores que se describen a continuación son la causa de la mayoría de esos problemas.
- Importación faltante: usando
Datesin<%@ page import="java.util.*" %>no se compila a menos que esté completamente calificadojava.util.Dateestá escrito, como se muestra en el ejemplo de esta página. - Letras de patrón incorrecto:
mmson minutos yMMson meses, yDDes día del año en lugar de día del mes. - Zona horaria del servidor:
new Date()Refleja el reloj del servidor, no el del visitante. EstablecertimeZoneen la etiqueta de formato cuando la audiencia está en otro lugar. - Compartir un formato de fecha simple: La clase no es segura para subprocesos, por lo que una instancia estática compartida entre solicitudes puede devolver una salida corrupta. Cree una por solicitud o utilice
DateTimeFormatter. - Página en blanco después de una actualización: un contenedor en Jakarta EE 10 rechaza el antiguo
javaxLos archivos JAR de JSTL hacen que la etiqueta de formato se muestre como texto literal hasta que los artefactos de Jakarta estén en su lugar. - Formatear una cadena: un valor extraído de un parámetro de solicitud es texto y debe ser analizado con
parse()antes de que cualquier método de fecha lo acepte.

