Problema com mascara "2008-02-02 10:05:02.0"

5 respostas
aquilante

Pessoal muito bom dia!

Eu estou com um problema pra configurar uma data.

caso:

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			
String data = df.format(hist.getDataHoraTransmissao().toString()); //aqui eu converto o objeto para string. nesta linha já apresenta erro.
Date dataHrTrans = DateHelper.parseDate("yyyy-MM-dd HH:mm:ss", data); //a classe DateHelper tem o método parseDate que converte tipo String para Date
			
hist.setDataHoraTransmissao(dataHrTrans); //seto o valor de DataHoraTransmissao com a nova máscara

getDataHoraTransmissao() me retorna uma data com essa máscara “2008-02-02 10:05:02.0”. Eu n preciso dos milisegundos e não estou conseguindo modificar isso.

Método parseDate

public static Date parseDate(String pattern, String value) throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat(pattern);
return (value == null) ? null : formatter.parse(value);
}

Desde já obrigado! :lol:

5 Respostas

xandevieira
Eu faço isto, veja se te ajuda
public static String convertddMMyyyy_HHmmss(Date date) {
	return convertDate("dd/MM/yyyy - HH:mm:ss", date);
}

public static String convertDate(String format, Date dtConsulta) {
	try {
		SimpleDateFormat formatter = new SimpleDateFormat(format, new Locale("pt", "BR"));
		return formatter.format(dtConsulta);

		} catch (Exception e) {
			return null;
		}
	}
T

Leia direito o javadoc de SimpleDateFormat. Lá ele especifica que o formato para os milissegundos é “S” maiúsculo (não “s” minúsculo, que é para segundos).

Ou seja, algo como:

“yyyy-MM-dd HH:mm:ss.SSS”

Talvez você tenha de completar com 2 zeros à direita, antes de efetuar o “parse”. Não testei aqui para ver se é esse o problema.

aquilante

thingol bom dia,

cara acho q n entendi eu modofiquei meu código

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS"); //acrescentei os milisegundos na máscara "SS" 
Date teste = hist.getDataHoraTransmissao(); // pego o objeto
			              
String data = df.format(teste); //aqui eu converto o objeto para string. Nessa linha data já tem a mascara correta   
Date dataHrTrans = df.parse(data); // Nessa linha ocorre o cast para data ,so que a mascara n é passada tb.
			              
hist.setDataHoraTransmissao(dataHrTrans);

Ta me retornando essa máscara “Sat Feb 02 08:58:02 GMT-03:00 2008”.
pq?

Vlwss! :lol:

M
avsouza:
Eu faço isto, veja se te ajuda
public static String convertddMMyyyy_HHmmss(Date date) {
	return convertDate("dd/MM/yyyy - HH:mm:ss", date);
}

public static String convertDate(String format, Date dtConsulta) {
	try {
		SimpleDateFormat formatter = new SimpleDateFormat(format, new Locale("pt", "BR"));
		return formatter.format(dtConsulta);

		} catch (Exception e) {
			return null;
		}
	}

Esse metodo q o avsouza usou, nao ti ajudou?
Estava com problema parecido e aqi funfou :D

[]'s

aquilante

Pois é cara, só q eu já tenho meu método implementado e funcionando, até agora! hehehe. E eu queria ver onde está o erro. Na verdade o meu método faz o mesmo, pelo menos penso isso. Por isso estou pedindo ajuda de vcs, pare resolver esse erro.
Meu método:

public static Date parseDate(String pattern, String value) throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat(pattern);
return (value == null) ? null : formatter.parse(value);
}

Estou fazendo assim:

Date teste = hist.getDataHoraTransmissao();     
String data = df.format(teste);
Date dataHrTrans = DateHelper.parseDate("yyyy-MM-dd HH:mm:ss", data);
//recebo como parâmetro a mascara e data

a questão é pq eu recebo como retorno “Sat Feb 02 08:58:02 GMT-03:00 2008”?

Criado 2 de abril de 2008
Ultima resposta 2 de abr. de 2008
Respostas 5
Participantes 4