Duvida Datas em Java

4 respostas
P

Pessoal ve se alguem me ajuda nisso,
como eu poderia tendo uma data base, por exemplo “01012000” e
recebendo um numero de dias por exemplo “512”, retornar qual data a
parttir da data base, como posso fazer isso em java?
valeu

4 Respostas

D

E ai Paulo!
Tenta usar a classe GregorianCalendar.

SimpleDateFormat in = new SimpleDateFormat("dd/MM/yyyy");

try {
	GregorianCalendar cal = new GregorianCalendar();
	cal.add(GregorianCalendar.DAY_OF_YEAR, 10);
	System.out.println(in.format(cal.getTime()));
} catch (ParseException e) {
	e.printStackTrace();
}

No metodo add vc passa como argumento qual a unidade que vc quer adicionar (dia do ano, mes, ano etc…) e a variação.
No exemplo tá adicionando 10 dias apartir da data atual.
Certinho? Qualquer dúvida eu tento te ajudar…
[]

P

Diego, valeu pela ajuda
so ta dando um problema pq parece q esse metodo na leva em conta os anos bissextos e esta dando uma diferença de dias nas datas, eh assim mesmo?
valeu

D

Realmente, a classe GregorianCalendar leva em consideração anos bisextos, agora quanto a diferença na data eu não sei te dizer se tem mesmo essa diferença…
Se vc descobrir posta ai se dá mesmo essa diferença pq agora eu fiquei curioso… :roll:

P

Resolvi o problema, eh q tinha uma outra funçao q fazia o contrario, recebia uma data e retornava o numero de dias em relaçao a uma data base, o erro estava ai, pois nao estava levando consideraçao os anos bissextos, ja ta funcionando, valeu cara, e aqui esta esse metodo:

protected int calculaQtdDias(String pData)
	{
		int anoVenc = Integer.parseInt(pData.substring(4,8));
		int mesVenc = Integer.parseInt(pData.substring(2,4));
		int diaVenc = Integer.parseInt(pData.substring(0,2));
			
		Calendar calendar = new GregorianCalendar();

		calendar.set(1901,Calendar.JANUARY,1);
		int diaInicial = calendar.get(Calendar.DAY_OF_YEAR);

		
		calendar.set(anoVenc,mesVenc - 1,diaVenc);
		int diaVencimento = calendar.get(Calendar.DAY_OF_YEAR);
		
		int diasError = Math.round((anoVenc - 1901)/4);

		return (diaVencimento - diaInicial) + ((anoVenc - 1901) * 365) + diasError;
	
	}

valeu

Criado 21 de março de 2005
Ultima resposta 22 de mar. de 2005
Respostas 4
Participantes 2