convertDateTime não Funciona [Resolvido]

Opa pessoal …
Já to sentindo falta de Struts + Jstl …

Alquém pode me ajudar …
por que o código abaixo :

<h:outputText value="#{cliente.abertura}  ">  
   <f:convertDateTime type="date" dateStyle="short" pattern="dd/MM/yyyy" locale="pt,BR" timeZone="America/Sao_Paulo" />   
</h:outputText>

tá imprimindo isso como resultado

Tue Mar 06 17:53:43 BRT 2012

O atributo (abertura) é do tipo Date e achei dois tópicos aqui no guj sobre o assunto. Mas o problema continua sem solução .
http://www.guj.com.br/java/87432-duvida-com-formato-de-datas
http://www.guj.com.br/java/42228-jsf-conversao-de-data

Valeu !

ninguém ?

no locale, tente colocar só pt ao invés de pt,BR

Vixi tive problemas com isso tbm , nao entendi mto bem o resultado que vc espera, mas talvez seja como o meu problema,criei um conversor customizado, segue o codigo:




import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;

public class DateConverter implements Converter {

	@Override
	public Object getAsObject(FacesContext fc, UIComponent ui, String value) {
		DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
		Date data = null;
		try {
			data = df.parse(value);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return data;

	}

	@Override
	public String getAsString(FacesContext fc, UIComponent ui, Object value) {
		try {
			DateFormat newStyle = new SimpleDateFormat("dd/MM/yyyy");
			if (value != null && !value.toString().trim().isEmpty()) {

				DateFormat df = new SimpleDateFormat(
						"E MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);

				Date data = df.parse(value.toString().trim());

				String formatedDate = newStyle.format(data);
				return formatedDate;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

}


Boa tarde, não sei muito bem desta forma de fazer a conversão de datas porém vi em um tópico que vc utiliza tbm o primefaces e o p:calendar funciona bem e pode ser uma solução

Tentei …
Não Rolou :cry:

Legal o p:calendar mas no meu caso não é um input … só quero exibir uma data nesse formato : “dd/MM/yyyy”

você quer a data no formato dd/MM/yyyy? se sim, deixe apenas o atributo pattern. assim:

&lt;f:convertDateTime pattern="dd/MM/yyyy" /&gt;

[quote=lgweb]Vixi tive problemas com isso tbm , nao entendi mto bem o resultado que vc espera, mas talvez seja como o meu problema,criei um conversor customizado, segue o codigo:




import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;

public class DateConverter implements Converter {

	@Override
	public Object getAsObject(FacesContext fc, UIComponent ui, String value) {
		DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
		Date data = null;
		try {
			data = df.parse(value);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return data;

	}

	@Override
	public String getAsString(FacesContext fc, UIComponent ui, Object value) {
		try {
			DateFormat newStyle = new SimpleDateFormat("dd/MM/yyyy");
			if (value != null && !value.toString().trim().isEmpty()) {

				DateFormat df = new SimpleDateFormat(
						"E MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);

				Date data = df.parse(value.toString().trim());

				String formatedDate = newStyle.format(data);
				return formatedDate;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

}


[/quote]

É o que eu quero é só impimir uma data no formato : dd/MM/yyyy
só que o meu : <f:convertDateTime nnão funciona …
imprime a data assim : Wed Mar 07 15:28:29 BRT 2012

Interessante a sua solução. Pro meu caso é uma Bazuca pra matar um mosquito. Mas legal !
E como vc faz para o converter a ser chamado seja esse que vc criou e nao o padrão ? Como que ficou no seu xhtml / jsf ? >

[quote=wbdsjunior]você quer a data no formato dd/MM/yyyy? se sim, deixe apenas o atributo pattern. assim:

&lt;f:convertDateTime pattern="dd/MM/yyyy" /&gt;

Essa foi a primeira tentativa …

&lt;h:outputText value="#{formClienteBean.data}  "&gt;  
						&lt;f:convertDateTime pattern="dd/MM/yyyy"  /&gt;   
					&lt;/h:outputText&gt;

imprime assim 
Wed Mar 07 15:39:22 BRT 2012

Obrigado a todos que estão tentando ajudar !

o engraçado é que esse cara aqui :

                                       <h:outputText value="#{cliente.valor}" >
						<f:convertNumber locale="pt,BR" maxFractionDigits="2" />
					</h:outputText>	

3 linhas abaixo …

FUNCIONA PERFEITAMENTE !

registre o dateConverter no Faces-config.xml e use -o assim na pagina:

&lt;converter&gt;
  &lt;converter-id&gt;dateConverter&lt;/converter-id&gt;
  &lt;converter-class&gt;seuPackage.DateConverter&lt;/converter-class&gt;
 &lt;/converter&gt;

&lt;h:outputText value="#{seuBean.dataHora} "
				 converter="dateConverter" &gt;

Acredite, tentei de varias maneiras resolver este problema, pesquisie mto nao não encontrei uma solução melhor.

É …
Valeu lgweb … assim funcionou !
Mas nossa que enpenho né !

Tinha feito um método estático que convertia a data em String :

	/**
	 * Formata uma data com um pattern dd/MM/yyyy.
	 * 
	 * @param data
	 * @param pattern
	 * @return
	 */
	public static String formataData(Date data) {
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy");
		return simpleDateFormat.format(data);
	}
	

Aí mandava string pra tela :roll:

Mas a sua solução é bem mais elegante .

Bem … obrigado novamente .

falow !

Vc poderia setar a data na variável do input assim que iniciar o seu bean e então colocar ele como readOnly = “true” mas enfim, se arrumou do seu jeito melhor ainda e até da menos trabalho! Até porque forma de fazer existe N :smiley: