Ajuda com logica {data e dias restantes} JAVA [RESOLVIDO]

Olá, estou tendo problemas para implementar uma funcionalidade em um app, eu preciso dizer quantos dias faltam pra chegar determinada data porém… TA FODA! Na lógica de horas é simples, vc converte as horas e minutos em segundos, subtrai a hora alvo pela hora atual e shazam! ta ai o tempo que falta, é só converter em horas e minutos de novo. Com dias, meses e anos é mais complicado. Temos meses com 30,31 dias e anos bissextos que tornam fevereiro mais longo ou curto (sei lá). Oque influência no resultado final impedindo que eu use a lógica da hora. enfim, algum dos senhores conhece uma boa lógica pra mim saber por exemplo: hoje é dia 03/11/16 quantos dias faltam até o dia 03/01/17. Obg.:+1:

cara esse foi um dos meus primeiros programas em Pascal, bons tempos.

existem varias abordagens. a mais simples é

se o ano e o mes é o mesmo, então basta subtrair os dias.

se o ano é o mesmo, então vc precisa saber quantos dias se passaram desde primeiro de janeiro nas duas datas e ai subtrai.

pra isso vc precisa saber quantos dias tem um mes, aquele famoso array [ 31, 28, 31, … ] ( lembrando que o indice do array vai ser o mes-1 )

mas e se o ano for bissexto? ai vc soma um em fevereiro.

mas como saber se o ano é bissexto? se vira. tem um calculo pronto na internet com as condições ( de 4 em 4 mas pula de 100 e 100, algo assim )

e se os anos forem diferentes.

ai vc usa uma logica semelhante ao dos meses. escolhe uma data base ( primeiro de janeiro do ano menor ) e vai somando. e se for bissexto soma um. e vai.

da trabalho, muito trabalho. divida o trabalho e teste bem.

Boa tarde Gilian,

Essa API pode te ajudar: http://www.joda.org/joda-time/

Se você estiver utilizando Java 8 se não me engano ela já vem junto.

Apenas exemplo:

public static void main(String[] args) {
		// Ex A
		DateTime data1a = new DateTime(2016, 11, 3, 0, 0, 0, 0); 
		DateTime data2a = new DateTime(2017, 01, 3, 0, 0, 0, 0); 
		
		int quantidadeDiasa = Days.daysBetween(data1a, data2a).getDays();
		System.out.println(quantidadeDiasa);
		
                //Ex B
		Calendar calendar1 = Calendar.getInstance();
		calendar1.set(2016, Calendar.NOVEMBER, 03, 0, 0);
		
		Calendar calendar2 = Calendar.getInstance();
		calendar2.set(2017, Calendar.JANUARY, 03, 0, 0);
		
		DateTime data1b = new DateTime(calendar1.getTime());
		DateTime data2b = new DateTime(calendar2.getTime());
		
		int quantidadeDiasb = Days.daysBetween(data1b, data2b).getDays();
		System.out.println(quantidadeDiasb);
		
	}

Espero que isso possa te ajudar.