Formatar a Data recebida

3 respostas
D

Boa Tarde Galera!

Eu tenho um dúvida se existe outro método para fazer uma formatacao na data,
tipo eu tenho uns dados que vem com a data no formato: 14/dez, 20/out…
so que o banco de dados nao entende isso né…
entao eu estou tentando formatar isso, eu fiz desse modo:

if(c.getData().contains("dez")){
                       c.setData(c.getData().replace("dez", "12/2011"));
                      
                 }

mas ai eu vou precisa fazer 12 if para cada mes, e eu lembro q um prof meu falou que tantos if deixa o sistema lento…
sera que existe outro método para fazer isso??

Obrigado, e feliz natal a todos!!

3 Respostas

K

Vou te dar uma sugestão, não sei se seria a melhor mais ai vai.

Faz um Enum com os meses desse jeito:

public enum MesesDoAno {

	jan("01"),
	fev("02"),
	//assim por diante
	dez("12");
	private String mes;
	
	private MesesDoAno(String mes) {
		this.mes=mes;
	}

	public String getMes() {
		return mes;
	}

}

e na hora de alterar a data, fazer da seguinte forma:

String dtRecebida = "10/dez";
String mes[] = dtRecebida.split("/");		
String auxiliar = MesesDoAno.valueOf(mes[1]).getMes();
String anoAtual = String.valueOf(Calendar.getInstance().get(Calendar.YEAR));
dtRecebida = dtRecebida.replace(mes[1], auxiliar+"/"+anoAtual);

Desse jeito não vai ter nenhum if else deixando feio o código.
Se tiveres usando JAVA7 da para fazer um Switch case com String;

fbl.lucas

Usa SimpleDateFormat

Date data = new SimpleDateFormat("dd/MMM").parse("14/dez"); String dataBanco = new SimpleDateFormat("dd/MMM").format(data);

fbl.lucas

fbl.lucas:
Usa SimpleDateFormat

Date data = new SimpleDateFormat("dd/MMM").parse("14/dez"); String dataBanco = new SimpleDateFormat("dd/MMM").format(data);


Uma consideração, ao utilizar o SimpleDateFormat.parse com o pattern dd/MMM o Date gerado estará com o ano 1970,
para alterar o ano:

Calendar calendar = Calendar.getInstance(); calendar.setTime(new SimpleDateFormat("dd/MMM").parse("14/dez")); // seta o ano atual calendar.set(Calendar.YEAR, Calendar.getInstance().get(Calendar.YEAR)); Date data = calendar.getTime();

Criado 24 de dezembro de 2011
Ultima resposta 26 de dez. de 2011
Respostas 3
Participantes 3