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.

  • 🔘 Vantagem: Cada método de núcleo Java permanece disponível dentro de uma página JSP sem necessidade de configuração adicional.
  • ☑️ Construtores: Date() retorna o momento atual, enquanto Date(long) reconstrói um momento a partir de milissegundos desde 1970.
  • ✅ Métodos: after, before, compareTo, equals, getTime, setTime e toString abrangem a maior parte das comparações.
  • 🧪 Etiqueta de expressão: Uma única tag de expressão imprime o objeto de data diretamente no HTML gerado.
  • 🛠️ Formatação: O SimpleDateFormat e a tag formatDate do JSTL controlam exatamente como o valor aparece.
  • 📊 API moderna: As classes java.time, como LocalDateTime, substituem os métodos Date mais antigos, que foram marcados como obsoletos.

Data e Hora Atual JSP

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 do navegador da página JSP exibindo a data e hora atuais.

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 exemplo ZoneId.of("Asia/Kolkata").
  • Instant — um registro de data e hora da máquina, a correspondência mais próxima do que getTime() 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 Date sem <%@ page import="java.util.*" %> falha ao compilar a menos que seja totalmente qualificado java.util.Date está escrito por extenso, como mostra o exemplo nesta página.
  • Letras com padrão incorreto: mm são minutos e MM são meses, e DD É 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. Configurar timeZone na 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 javax Os 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á.

Perguntas Frequentes

java.util. Adicionar, acrescentar <%@ page import="java.util.*" %> no topo da página, ou escreva o nome completo java.util.Date dentro da tag de expressão, que é o que o exemplo nesta página faz.

Assistentes de IA podem traduzir um padrão de formatação para inglês simples, converter um formato mais antigo Date trecho em java.timee apontar um problema de segurança de threads em um formatador compartilhado. Teste a sugestão, pois uma letra de padrão incorreta ainda compila sem erros.

Sim. Travas deslizantes portáteis Copiloto do GitHub Completa scriptlets e diretivas taglib a partir de um comentário. Consulte a JSTL. uri isso ocorre porque ele frequentemente usa a versão mais antiga como padrão. java.sun.com valor em vez do de Jacarta.

new Date() Lê o relógio e o fuso horário padrão do servidor que executa a página. Passe um fuso horário explícito para o formatador ou faça a conversão no cliente, caso o horário local do visitante seja o que importa.

getTime() retorna um long: os milissegundos decorridos desde 1 de janeiro de 1970. toString() Retorna uma string legível construída a partir da localidade padrão. Armazene o número e exiba a string.

Não. A classe ainda é suportada, mas a maioria de seus acessadores de campo exibe um aviso de obsolescência desde o JDK 1.1. Espera-se que o novo código utilize java.time e Date.from() faz a ponte entre as duas APIs.

Sim. Declare o objeto com <jsp:useBean> e renderizá-lo com o JSTL <fmt:formatDate> tag. Nenhum scriptlet é necessário, o que mantém a marcação legível e mais fácil de manter.

A etiqueta de expressão <%= %>Tudo o que contém é avaliado e seu toString() O resultado é gravado na resposta, e é assim que a página de exemplo imprime a data em uma única linha.

Resuma esta postagem com: