Data e Hora Atual JSP
⚡ Resumo Inteligente
O tratamento de datas em JSP depende do núcleo padrão do JSP. JavaAssim, a classe java.util.Date e seus construtores podem ser chamados diretamente de um scriptlet ou de uma tag de expressão para imprimir a data e a hora atuais em uma página.

Tratamento de data JSP
A maior vantagem do JSP é que todos os métodos do núcleo Java Pode ser usado em JSP.
Nesta seção, usaremos o Date classe do java.util pacote, que armazena data e hora em um único objeto. A classe está disponível em todos os JSP A página é exibida assim que o pacote é importado com uma diretiva de página.
Ele suporta dois construtores:
| Construtor | O que ele faz |
|---|---|
Date() |
Isso nos fornece a data e a hora atuais. |
Date(long millisec) |
Este parâmetro considera milissegundos decorridos desde 1 de janeiro de 1970. |
O Date A classe também expõe os métodos listados abaixo. Java Os tipos de retorno primitivos são escritos em minúsculas, que é como eles aparecem no Java API.
| Forma | Descrição |
|---|---|
boolean after(Date date) |
Indica se esta data é posterior ao parâmetro de data fornecido. |
boolean before(Date date) |
Indica se esta data é anterior ao parâmetro de data fornecido. |
Object clone() |
Cria uma cópia do objeto de data. |
int compareTo(Date date) |
Ele compara o objeto da classe de data com outro. |
int compareTo(Object date) |
Compara um objeto da classe `object` com outro. Essa sobrecarga pertence à API pré-genérica; atual. Java expõe apenas compareTo(Date). |
boolean equals(Object date) |
Verifica se dois objetos de data são iguais. |
long getTime() |
Obtém o tempo em milissegundos desde 1º de janeiro de 1970. |
int hashCode() |
Ele recupera o código hash da data fornecida. |
void setTime(long time) |
Define a hora do objeto de data fornecido. |
String toString() |
Ele converte o objeto de data em um objeto de string. |
Observação: os acessadores de campo desta classe, como getYear(), getMonth() e toLocaleString(), foram descontinuados desde o JDK 1.1. A classe em si ainda funciona, mas espera-se que o novo código utilize Calendar, DateFormat, ou o java.time As aulas são descritas mais abaixo nesta página.
Exemplo: Exibir a data e hora atuais em JSP
Exemplo:
Neste exemplo, estamos obtendo a data e hora atuais usando o objeto de data.
<%@ 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>
Explicação do código:
Code Linha 11: Estamos usando o objeto date para buscar a data e hora atuais.
Equivalente moderno: O código acima foi mantido exatamente como foi publicado. toLocaleString() foi substituída pela DateFormat.format(Date date) a partir do JDK 1.1, então uma página atual escreveria <%= java.text.DateFormat.getDateTimeInstance().format(new java.util.Date()) %> em vez de. o <%= %> A própria etiqueta de expressão permanece inalterada.
Ao executar o código acima, você obtém a seguinte saída.
Saída:
Estamos obtendo a data e a hora atuais.
Como formatar data e hora em JSP
Imprimindo um Date O objeto retorna diretamente o formato produzido pela localidade padrão, que raramente corresponde ao formato necessário para uma página. Existem duas abordagens para controlar a saída.
O primeiro mantém a lógica em Java e usa SimpleDateFormat, onde cada letra do padrão representa uma parte do 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 padrão | Significado | Exemplo |
|---|---|---|
yyyy |
Ano com quatro dígitos | 2026 |
MM |
Número do mês | 07 |
dd |
Dia do mês | 29 |
HH |
Hora, relógio de 24 horas | 18 |
mm |
Minutos | 45 |
ss |
segundos | 02 |
A segunda abordagem mantém a página livre de Java código e usa a biblioteca de formatação JSTL, que combina bem com o outro tags de ação 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" />
O uri O valor mostrado acima é o formato JSTL 3.0 usado pelo Jakarta EE 10 e versões posteriores. Páginas executadas em um contêiner mais antigo ainda usam o mesmo formato. http://java.sun.com/jsp/jstl/fmte os contêineres continuam aceitando o URI antigo por questões de compatibilidade. type atributos seleciona date, time, ou both, enquanto dateStyle, timeStyle e timeZone Aprimore o resultado.
Como manipular datas com a API java.time em JSP
Java 8 introduziu o java.time pacote, e agora é a maneira recomendada de trabalhar com datas em qualquer Java código, incluindo uma página JSP. Ao contrário de DateEssas classes são imutáveis e thread-safe, portanto, um único formatador pode ser compartilhado com segurança entre várias requisições.
<%@ 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) %>
Selecione a classe que corresponde ao que a página realmente precisa:
LocalDate— uma data sem hora, como uma data de nascimento.LocalTime— um horário sem data, como por exemplo, o horário de funcionamento.LocalDateTime— uma data e hora sem fuso horário definido.ZonedDateTime— uma data e hora vinculadas a um fuso horário, por exemploZoneId.of("Asia/Kolkata").Instant— um registro de data e hora da máquina, a correspondência mais próxima do quegetTime()retorna.
O código existente não precisa ser reescrito de uma só vez, porque Date.from(instant) e date.toInstant() Converter entre as duas APIs.
Erros comuns no tratamento de datas em JSP
Uma data que é impressa corretamente em uma máquina de desenvolvimento ainda pode estar errada na produção. Os erros abaixo são responsáveis pela maioria desses relatos.
- Importação ausente: utilizando
Datesem<%@ page import="java.util.*" %>falha ao compilar a menos que seja totalmente qualificadojava.util.Dateestá escrito por extenso, como mostra o exemplo nesta página. - Letras com padrão incorreto:
mmsão minutos eMMsão meses, eDDÉ o dia do ano, e não o dia do mês. - Fuso horário do servidor:
new Date()Reflete o relógio do servidor, não do visitante. ConfigurartimeZonena tag de formatação quando o público-alvo está em outro lugar. - Compartilhando um SimpleDateFormat: A classe não é thread-safe, portanto, uma instância estática compartilhada entre requisições pode retornar resultados corrompidos. Crie uma instância por requisição ou use
DateTimeFormatter. - Página em branco após uma atualização: um contêiner em Jakarta EE 10 rejeita o antigo
javaxOs arquivos JAR do JSTL fazem com que a tag de formatação seja renderizada como texto literal até que os artefatos do Jakarta estejam implementados. - Formatação de uma string: Um valor extraído de um parâmetro de solicitação é um texto e deve ser analisado com
parse()Antes de qualquer data, o método aceitará.

