Para exibir datas em um formato específico em páginas JSP utilizando Expression Language (EL) e a biblioteca JSTL (JavaServer Pages Standard Tag Libray), é necessário importar as tags apropriadas e utliizar a tag fmt:formatDate.
Importação das Tags Necessárias
No início do seu JSP, inclua as seguintes diretivas para ter acesso às tags JSTL Core e Formatting:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
Utilizando fmt:formatDate
A tag fmt:formatDate permite formatar um objeto de data/hora de acordo com um padrão definido. A sintaxe básica é:
<fmt:formatDate value="${suaVariavelDeData}" pattern="formatoDesejado"/>
Por exemplo, para exibir uma data em um campo de input:
<input type="text" value="<fmt:formatDate value="${viewKq.srq}" pattern="yyyy-MM-dd" />" />
value="${suaVariavelDeData}": Refere-se à variável EL que contém o objeto de data a ser formatado (pode ser umjava.util.Date,java.util.Calendar,java.sql.Timestamp, etc.).pattern="formatoDesejado": Define o padrão de formatação da data e hora.
Opções de Formatação com type e style
A tag fmt:formatDate também oferece atributos para formatação predefinida:
type: Pode ser "date", "time" ou "both".dateStyle: Estilos predefinidos como "default", "short", "medium", "long", "full".timeStyle: Estilos predefinidos como "default", "short", "medium", "long", "full".
Exemplos de Uso:
<!-- Formatação combinada de data e hora -->
<fmt:formatDate value="${isoDate}" type="both"/> <!-- Ex: 2018-01-08 23:59:59 -->
<!-- Apenas a data -->
<fmt:formatDate value="${date}" type="date"/> <!-- Ex: 2018-01-08 -->
<!-- Apenas a hora -->
<fmt:formatDate value="${isoDate}" type="time"/> <!-- Ex: 23:59:59 -->
<!-- Data com estilo 'long' -->
<fmt:formatDate value="${isoDate}" type="date" dateStyle="long"/> <!-- Ex: 8 de janeiro de 2018 -->
<!-- Hora com estilo 'long' -->
<fmt:formatDate value="${isoDate}" type="time" timeStyle="long"/> <!-- Ex: 23:59:59 -->
Padrões de Formatação Personalizados (pattern)
Os padrões de formato permitem um controle granular sobre a saída da data/hora:
d: Dia do mês (1-31).dd: Dia do mês com zero à esquerda (01-31).M: Mês (1-12).MM: Mês com zero à esquerda (01-12).MMM: Nome abreviado do mês (Jan, Fev).MMMM: Nome completo do mês (Janeiro, Fveereiro).yy: Ano com dois dígitos.yyyy: Ano com quatro dígitos.h: Hora (formato 12h, 1-12).hh: Hora com zero à esquerda (formato 12h, 01-12).H: Hora (formato 24h, 0-23).HH: Hora com zero à esquerda (formato 24h, 00-23).m: Minuto (0-59).mm: Minuto com zero à esquerda (00-59).s: Segundo (0-59).ss: Segundo com zero à esquerda (00-59).a: Indicador AM/PM.z: Fuso horário.
Exemplo de Padrão Personalizado:
<fmt:formatDate value="${dataCompleta}" pattern="dd/MM/yyyy HH:mm:ss"/> <!-- Ex: 08/01/2018 23:59:59 -->
<fmt:formatDate value="${dataHora}" pattern="EEEE, MMMM d, yyyy HH:mm:ss Z"/> <!-- Ex: Segunda-feira, janeiro 8, 2018 13:30:00 -0600 -->
A distinção entre h e H é crucial para a correta exibição de horas no formato 12h ou 24h. Por exemplo, hh:mm aa para 12h com AM/PM, e HH:mm para 24h.