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: