Estou tentando persistir um campo DataHora no banco, porém sempre recebo a mensagem is_not_a_valid_date.
Tendo utilizar 2010-10-10 08:00:00, 10/10/2010 08:00:00
E de forma alguma o banco quer aceitar.
Obrigadasso, vou testar.
dou a resposta amanhã se funcionou.
doravan
Não deu certo da forma que vc indicou, porém eu fiz com o SimpleDateFormat
Ficou assim
Levando em consideração que vc tem a opção de adicionar a data e a hora, ou somente a data.
importjava.text.DateFormat;importjava.text.MessageFormat;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.Locale;importjava.util.ResourceBundle;importbr.com.caelum.vraptor.Convert;importbr.com.caelum.vraptor.Converter;importbr.com.caelum.vraptor.converter.ConversionError;importbr.com.caelum.vraptor.core.Localization;importbr.com.caelum.vraptor.ioc.RequestScoped;/** * Locale based date converter. * * @author Guilherme Silveira */@Convert(Date.class)@RequestScopedpublicclassLocaleBasedDateConverterimplementsConverter<Date>{privatefinalLocalizationlocalization;publicLocaleBasedDateConverter(Localizationlocalization){this.localization=localization;}publicDateconvert(Stringvalue,Class<?extendsDate>type,ResourceBundlebundle){if(value==null||value.equals("")){returnnull;}Localelocale=localization.getLocale();if(locale==null){locale=Locale.getDefault();}SimpleDateFormatlongFormat=newSimpleDateFormat("dd/MM/yyyy HH:mm");SimpleDateFormatshortFormat=newSimpleDateFormat("dd/MM/yyyy");try{DateformatedDate;if(value.length()<=11)formatedDate=shortFormat.parse(value);elseformatedDate=longFormat.parse(value);returnformatedDate;}catch(ParseExceptione){thrownewConversionError(MessageFormat.format(bundle.getString("nao_e_uma_data_valida"),value));}}}
Lucas_Cavalcanti
e desse seu jeito funciona?
doravan
Deu certo no primeiro momento, porém, depois dos testes, parou de funcionar no ambiente de produção.
Ainda não consigo fazer a conversão. Alguma dica?
Lucas_Cavalcanti
parou de funcionar como? deu algum erro?
ele passa pelo seu converter?
coloque um log dentro dele pra ver se passa lah
doravan
ele não está mais pegando a hora.
no primeiro momento ele pegava, agora não pega mais.
Lucas_Cavalcanti
mas ele passa pelo converter?
doravan
Sim, ele passa.
ao menos quando tento inserir uma data errada, ele indica a mensagem personalizada.
Lucas_Cavalcanti
escreva um teste (do JUnit) pra essa classe e veja se quando vc passa só a data ele converte direito, e se vc passa data e hora ele também converte direito
doravan
Sucesso no JUnit!
A classe converte a data, porém a hora não persiste.
E sabe o que é incrível? Ela funciona quando quer…
Pra resolver o problema da hora eu criei outro campo.
Não vou confiar em utilizar data/hora com o mysql, ao menos não ainda.
Sei que é POG fazer isso, porém a hora é opcional, não vejo problema em ter um campo exclusivo pra isso.
na sua classe LocaleBasedDateConverter ele converte certo tanto pra data qto pra data e hora?
doravan
A idéia era criar um campo onde a hora é opcional, por isso o conversor faz a distinção dos dados através do tamanho da String inserida.
Lucas_Cavalcanti
certo, mas o que vc pode fazer é que quando ele não coloca hora, vc adiciona na string um “00:00:00”, daí fica como meia noite e sempre tem uma hora na data