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รก.

