Fomatação e Calculo com Datas

3 respostas
C

Bom dia Senhores,
Recorro novamente ao Fórum, para orientações;

Necessito que o método abaixo, me retorne a data de ontem formatada da seguinte forma YY/MM/DD..

Conforme o código abaixo, o retorno da data de ontem até consegui mas formatar estou com dificuldade, a principio seria apenas utilizar SimpleDateFormat("yy'de' MM 'de'DD"), mas que ponto do método?

protected static String ontem() {
		Calendar cal = Calendar.getInstance();

		String stDia = String.valueOf(cal.get(Calendar.DAY_OF_MONTH) - 1);
		String stMes = String.valueOf(cal.get(Calendar.MONTH) + 1);
		String stAno = String.valueOf(cal.get(Calendar.YEAR));

		String ontem = (stAno + stMes + stDia);
		return ontem;
	}

Agradeço pela ajuda de todos,

Conectionsp

3 Respostas

ViniGodoy

Se você precisa manipular, formatar e calcular coisas com datas, não use a API nativa do Java.
É tediosa, difícil e vai te obrigar a constantemente converter valores para milisegundos e calcular conversões no braço.

Ao invés disso, use o JODA-Time. É uma API feita especialmente para isso. Simples, rápida e fácil.
http://joda-time.sourceforge.net/

Banzai10

Na verdade você pode usar a classe Format que fará a formatação para você, aqui vai alguns exemplos de uso.

http://www.exampledepot.com/egs/java.text/FormatDate.html
http://www.arquivodecodigos.net/arquivo/visualizar_dica.php?qual_dica=48 <- bem parecido com o seu

O único problema é que eles usam Date que está deprecated e não Calendar


Para discutir assuntos de TI: felipe-lopes.com

ViniGodoy

Se quiser realmente usar o calendar, dá uma olhada na classe Formatter. Nela vc encontra a documentação de como funciona o método String.format. Aliás, seu método não funciona para o dia 1. Especialmente se for 1 de janeiro. O jeito certo é usar o método add, da própria classe Calendar.

Retornar a data no formato que vc quer será realmente fácil, algo como:

protected static String getOntem() { Calendar cal = Calendar.getInstance(); cal.add(Calendar.DAY_OF_MONTH, -1); return String.format("%1$ty/%1$tm/%1$td", cal); }

Ainda assim, ainda recomendo que você dê uma olhada no Joda-Time, que eu falei ali em cima.

Criado 10 de agosto de 2008
Ultima resposta 10 de ago. de 2008
Respostas 3
Participantes 3