Formatar Datas com JSTL

Olá pessoal,

Estou desenvolvendo uma aplicação, na qual eu preciso apresentar uma data gravada no banco de dados. O banco que utilizo é MySQL e a data é retornada no formato “yyyy-mm-dd”.

Estou trabalhando com JSTL, e utilizo a seguinte tag para formatar as datas que pego do banco:

${avaliacao.data}

O formato de saída é “yyyy-mm-dd”. Como faço para que o formato de saída fique “dd/mm/yyyy”?

Isso é possível?

Abraços,
Juliano

Me diga uma coisa… como voce faria para pegar os valores de dia, mes e ano, se voce estivesse fazendo em modo console?

você não usaria

java.util.Date dataAtual= new java.util.Date();
int mes= dataAtual.getMonth();
int ano=dataAtual.getYear();
int dia=dataAtual.getDay();

depois você não imprimiria na forma que você quisesse?

ex:

System.out.println("\n Dia "+dia+ " mes “+mes+ " ano” +ano);

usando a jstl seria mais ou menos parecido.

ex:

“<c:out value = “${dia}” />”
“<c:out value = “${mes}” />”
“<c:out value = “${ano}” />”

bastaria voce guardar isso tudo em uma “string” passando para o banco de dados… o princípio é o mesmo de impressão, só que ao invés de voce estar imprimindo, vc armazena, chamando um servlet ArmazenaBD.java por exemplo…

não sei se fui claro, pois hoje naum estou muito “católico” para escrever.

Tente assim:

&lt;fmt:formatDate value="${avaliacao.data}" type="both" pattern="dd/MM/yyyy" /&gt;

Ou ainda setar o locale global da sua aplicacao ou de sessao.

Mais info sobre a jstl de uma lida na especificacao, vai ficar tudo bem mais claro

Hmm, aqui fiz um teste e veio certo já. veja o que eu fiz:

Como não tenho bd fiz um html para passar a data yyyy-MM-dd para uma servlet.

String dataOriginal = request.getParameter("data"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); java.sql.Date x = new java.sql.Date(sdf.parse(dataOriginal).getTime()); request.setAttribute("data", x); request.getRequestDispatcher("formataData.jsp").forward(request, response);

A parte de converter para java.sql.Date que fiz ali vc não deve precisar fazer, já que pra pegar do banco já vem no formato de java.sql.Date.

Daí usei a seguinte tag na jsp:

<fmt:formatDate value="${data}" />

e vc pode usar

<fmt:formatDate value="${data}" type="date" dateStyle="full" />

que já veio no formato correto pra mim…

flw

Olá pessoal,

Consegui resolver o meu problema de outra forma. Estou postando a solução, pois pode ser útil para mais alguém.

A solução foi mudar o tipo de retorno do meu método getData, o qual antes devolvia um java.sql.date, para retornar um String, daí formato a mesma para o padrão que o PC está configurado.

public String getData() {
String myData;
myData = DateFormat.getDateInstance().format(this.data);
return myData;
}

E na página JSP, a tag JSTL ficou:

<fmt:formatDate value="${avaliacao.data}" type=“date” />${avaliacao.data}

Obrigado a todos pela ajuda.

Abraços,
Juliano

desculpa reviver esse post.

Mas só pra retificar que minha data chegava assim:

2010-02-23 09:37:15.0

e usando como o colega acima falou:

<fmt:formatDate value="${avaliacao.data}" type="both" pattern="dd/MM/yyyy" dateStyle="full"/>

deu certinho e minha data aparece:

23/02/2010 

SALVE SALVE JSTL. Parei com conversões manuais a partir de hoje :smiley:

1 curtida