Formatar data para dd/MM/yyyy em que momento?

20 respostas
A

Boa tarde pessoal, qual a maneira correta de corrigir a formatação da data para dd/MM/yyyy, sei que posso usar um tal de SimpleDateFormat mais estou com duvida de em que momento devo aplicar.

Estou usando no meu projeto Struts e achei q na tag de imput poderia existir alguma coisa mais pelo que eu vi não existe… ou não encontrei…

:frowning:

20 Respostas

T

Amigo,
Você poder formatar a data tanto na aplicação ou no banco de dados.
Se optar pelo banco, use a data como String na aplicacao, e na insercao voce usa o format do banco.

[]´s

S

na aplicação aonde eu poderia fazer isso ?
por acaso na tag do Struts nao tem como fazer ?! :frowning:

T

O Struts só trabalha com String.
Voce poderia fazer um metodo em alguma biblioteca de funcoes da aplicacao que formataria essa String.
ex:

class Util{

public static Timestamp converterData(String data){

regra para converter a String em Timestamp

return Timestamp

}

}

E na insercao no banco (DAO) vc usaria:
pstm.setTimestamp(1, Util.converterData(Data));

Mais ou menos isso.

[]´s

T

smorigo:
na aplicação aonde eu poderia fazer isso ?
por acaso na tag do Struts nao tem como fazer ?! :-(

Nas tags do Struts tem sim (normalmente é um atributo chamado “format”), veja a documentação. Nem todas as tags aceitam esse atributo “format”.

S

mais sabe ele tá exibindo errado dai eu poderia fazer isso aonde no get ? do meu JavaBean ou isso não é uma boa pratica ?

S

mais sabe ele tá exibindo errado dai eu poderia fazer isso aonde no get ? do meu JavaBean ou isso não é uma boa pratica ?

D

Pelo visto tem uma taglib do projeto Jakarta q faz isso…

http://jakarta.apache.org/taglibs/doc/datetime-doc/intro.html

Algo do tipo…

<dt:format pattern="MM/dd/yyyy hh:mm" date="<%= data %>" />
D

Pô, se eh importante pra sua aplicação exibir a Data nesse formato, entao formata qdo for exibir ora…

Formate-a qdo precisar…
Soh isso!

S

eu estava pensando em fazer algo assim mais acho que nao fica muito bom… alguém pode me dar uma sugestão…

ParceiroDAO parceiroDAO = ParceiroDAO.getInstance();
Parceiro parceiro = (Parceiro) parceiroDAO.procurar(Long.valueOf(request.getParameter("codigoParceiro")));
		
SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
parceiro.setDataNascimento( formato.format(parceiro.getDataNascimento()) );

esse codigo tb nao está correto… preciso fazer um cast… mais tb to achando uma solucao muito “gambiarra”…

T

Amigo, qual é realmente seu problema?
Formatar a data ao inserir na base?
Se for isso, trabalhe sempre com String até o momento da inserção, no DAO vc pode setar String e usar o format do banco de dado (no SQL) ou converter para Timestamp a String e setar um Timestamp?
Entendeu?

ou pstm.setString(1, “25/11/2004”) -> formatar na query SQL
ou pstm.setTimestamp(1, converte(“25/11/2004”))

Nenhum dessa opções são “Gambiarras”

[]´s

_

Diogenes:
Pô, se eh importante pra sua aplicação exibir a Data nesse formato, entao formata qdo for exibir ora…

Formate-a qdo precisar…
Soh isso!

Também faço desta maneira.

A

Olha só na minha base nao tem problema o formato q ela esteja, estou querendo é que no meu formulário a bendita data fique no formato dd/mm/yyyy e ela está aparecendo como “yyyy/mm/dd”…

Gostaria de saber em qual o momento eu devo converter pois só quero que apareca nesse formato…

P

Uma data, como auqleur outra abstração, deve ser mantida no formato normal (i.e. java.util.Date) aé o momento de ser exibida.

Assim como ‘21/02/1983 07:30h AM’ é uma representação em String de uma data e hora, um objeto Date também o é. Já vi gente cair na besteira de ficar tratando data como String ate´a hora que precisa calcular algo, não façam isso.

Existem objetos que são String por natureza, como um nome (até ele pode ser promovido á objeto, depende do caso), a idade geralmente é um inteiro… a data é uma data, um estado no tempo e não uma string. Deixe o computador representá-la da melhor forma que ele conseguir, quando precisar msotrar para o usuário aí sim você converte para algo que o usuário entenda.

[]s

S

pessoal mais entao como eu posso fazer isso, eu nao tenho conhecimento ainda sobre isso entao estou viajando de qual maneira fazer :slight_smile:

D

[TahDificil/]

Afinal, qual o problema cara…

Utilize SimpleDateFormat no seu formulário… e pronto…
Qual dificuldade vc tah vendo nisso?

T

Aqui tem aquela discussão filosófica - formatar na camada de apresentação ou no Bean que é apresentado pela camada de apresentação?

Meu chefe achava que para uniformizar a formatação deveríamos formatar no Bean, então tínhamos para o mesmo dado “dataExpiracao” , “getDataExpiracao()” (retornando um Date) e “getFmtDataExpiracao()” (retornando uma String) onde “fmtDataExpiracao” era a data de expiração, formatada de acordo com o padrão do site.

No Struts, no entanto, você pode especificar em alguns tags (< bean:write >), com o atributo “formatKey”, um “pattern” de formatação que pode ser lido de um arquivo .properties (assim como as mensagens) em vez de ter de ser especificado diretamente com o atributo “format”.

S

Legal to conseguindo entender rs :slight_smile: mais preciso de uma ajuda com o código… Como eu aplico a conversao no meu Bean ?

&lt;%@ taglib uri="/tags/struts-bean" prefix="bean" %&gt;
&lt;%@ taglib uri="/tags/struts-html" prefix="html" %&gt;
&lt;%@ taglib uri="/tags/struts-logic" prefix="logic" %&gt;
&lt;%@ page import="java.text.SimpleDateFormat" %&gt;
&lt;%
	SimpleDateFormat formato = new SimpleDateFormat( "dd/MM/yyyy" );
%&gt;

Estou exibindo minha data usando a tag do Struts:

<html:text property=“dataNascimento” name=“meuParceiro” size=“15” />

L

Criei uma classe que converte pra mim datas no formato que quero.

Ficou assim:

public class Convert {
  public static String convertCalendarToString( String format, Calendar calendar ) {
        
      SimpleDateFormat sdf = new SimpleDateFormat( format );
        
      return sdf.format( calendar.getTime() );
        
  }
}

esse método recebe o formato que desejo que a data fique e a própria data, me retornando uma string.

assim qd preciso exibir alguma data em minha aplicação chamo esse método para formatar.

assim:

Calendar myDate = Calendar.getInstance();
System.out.println( Converts.convertCalendarToString( "dd/MMM/yyyy", myDate) );
System.out.println( Converts.convertCalendarToString( "dd/MM HH'h'", myDate) );

Enfim, assim vc utiliza a formatação que desejar. É bem simples!

S

Legal mais como eu coloco isso no Input ?

L

O que vc quer fazer é formatar uma data, não é?
Se vc já tem essa data, é só utilizar esse método para formatá-la.

Não trabalho com Struts, na verdade comecei a estudá-lo, mas o q eu entendi q vc quer fazer é isso?

&lt;input type="text" name="data" value="&lt;%=Converts.convertCalendarToString( "dd/MM/yy", myDate )%&gt;">
Criado 25 de novembro de 2004
Ultima resposta 26 de nov. de 2004
Respostas 20
Participantes 8