Conversão de Data

Bom dia!

Pessoal estou fazendo uma consulta no banco e esta consulta me retorna uma data no formato: “Sep 2 2011”. Bem como poço fazer para converter esta data para 02/09/2011, pois tenho que apresentar em um JSP. No caso o tratamente da data estou fazendo no proprio servlet.

Agradeço desde ja.

Pesquise por DateFormat e SimpleDateFormat

Cara, obrigado pela resposta. Bem ja pesquisei bastante cara sobre esta duas, mas todas tentativas foram frustada.

tentei fazer principalmente como o SimpleDateFormat, mas quando faço:

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
sdf.parse("Sep 2 2011");

Da o seguinte erro:

INFO: Unparseable date: "Sep 2 2011"

Não sei se é o mais apropriado (ou POG) dos jeitos mas …

Sua String não tem uma virgula depois do dia (não sei se é o correto nem como vc obtem ela) mas se vc colocar ficando assim

"Sep 2, 2011"

isso aqui funciona :

[code]
String strData = “Sep 2, 2011”;
//formatador p/ obter a data a partir da String
DateFormat fmt = DateFormat.getDateInstance(DateFormat.MEDIUM,Locale.ENGLISH);
//formatador p/ nosso padrão de data
DateFormat fmt2 = DateFormat.getDateInstance();

try {
	Date data = fmt.parse(strData);
	System.out.println("Data " + fmt.format(data) );
	System.out.println("Data " + fmt2.format(data) );
} catch (ParseException e) {
	e.printStackTrace();
}[/code]

[quote=luiz_renato]Não sei se é o mais apropriado (ou POG) dos jeitos mas …

Sua String não tem uma virgula depois do dia (não sei se é o correto nem como vc obtem ela) mas se vc colocar ficando assim

"Sep 2, 2011"

Cara não tem, mas acredito que da para colocar sim, vem da consulta que o BDA fez assim, vou ver isto.

Mas obrigado pela força.

Se o sistema te retorna um objeto DATE ai tu tem q usar o metodo “format” do SimpleDateFormat. Parse só se teu sistema retorna uma string.
Se for o 2º caso, retorna uma string, ai tem q usar o parse para transformar em um objeto DATE, mas tua mascara tem q ser igual a essa string q tu quer transformar em DATE.

Só q não entendo uma coisa. Se teu sistema retorna uma string em vez de um date, quem está salvando essa string em formato errado deveria fazer a mascara correta, creio eu.
Verifica isso ai, mas se tu está pegando esse campo da tabela, acho q lá deve estar configurado como DATE, ai tu temq usar o format com a mascara “dd/MM/yyyy”.

Bem observado.

Se o campo no banco de dados é Date vc não deveria receber uma String ou se o campo é String estão salvando no formato errado é bom dar uma olhada .

Pessoal obrigado pela atenção.

Cara recebo como String. Agora esta consulta foi feita pela DBA. Ele falou que para o caso esta era a forma que ele podia fazer para o banco usado(SQLServer). Eu solicitei que fizem com a mascara dd/MM/yyyy, mas ele falou que nao e possivel. Vai saber ne.

Mas valeu mesmo assim pela ajuda… estou tentando aqui mas não deu pe ate agora.

Não é possível? Mas q raio de DBA é essa? ehehehhe

Basta usar TO_CHAR no select q está sendo feito.

Exemplo:

SELECT TO_CHAR(COLUNA_DATA, 'DD/MM/YYYY') FROM TABELA;

Bom, tem como fazer e não querem facilitar a tua vida, pelo jeito.
O q posso sugerir é q tu faça um parse dessa string usando o formato da mascara de acordo com a data q veio.
Para saber a melhor maneira de montar a mascara para o parse, eu sugiro q tu pesquise a API do SimpleDateFormat (http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html).

Com isso o parse vai retornar um date q tu vai poder fazer o formato que quiser, tb usando uma mascara especifica e o metodo format.

Mas fala com esse teu “DBA” e sugere ele a usar o TO_CHAR na coluna de data na hora do SELECT.

Rs… obrigado pelas dicas do Parse. Qto ao TO_CHAR, não sou nenhum DBA, mas falei isto para ele, mas o cara realmente não ta é querendo mexer. Não vou discultir vou resolver aqui e pronto, passo para o gerente o que tive que fazer e como seria melhor fazer e ele se entendi com este cara.

Mas valeu vou verificar melhor a API.

Se o “cara do banco” não está muito a fim de ajudar, pega a String q ele está mandando mesmo :

		String strData = "Sep 2 2011";
		SimpleDateFormat fmt = new SimpleDateFormat("MMM dd yyyy",Locale.ENGLISH);
		try {
			Date data = fmt.parse(strData);
			System.out.println("Data " + new SimpleDateFormat("dd/MM/yyyy").format(data) );
		} catch (ParseException e) {
			e.printStackTrace();
		}

Rs… Cara do banco foi massa… vou falar isto para ele so não sei se ele vai gostar muito… do jeito que e metido…rsrsrsrs.

Agora Luiz vou testar aqui o metodo e posto o resultado.

Valeu obrigado.