Subtrair datas com Joda Time

Bom dia, to com uma duvida aqui acho que seja simples.

Tenho dois objetos Dates, como faço pra subtrair as duas datas e obter o resultado em dias entre eles?

Faça um casting para Calendar, nessa classe é possível operações com datas, acho que é isso.

[code]long diferenca = dataFinal.getTime() - dataInicial.getTime();

long dias = diferenca / (1000 * 60 *60 *24);[/code]

[quote=Eric Yuzo][code]long diferenca = dataFinal.getTime() - dataInicial.getTime();

long dias = diferenca / (1000 * 60 *60 *24);[/code][/quote]

Sabe utilizar o Joda Time?

Estou para aprender a usar, mas ainda não sei não.

Pois é eu fiz o dl do jar aqui e to tentando utiliza-lo, se alguem souber e puder me ajudar. Eu vi um exemplo do Vini aki no guj utilizando as classes LocalTime e Period. Tentei fazer passando um Date no construtor de LocalTime mas nao funcionou.

[code]LocalTime l = new LocalTime(date);
LocalTime l2 = new LocalTime(dataFinal);

	Period p = new Period(l, l2);
	
	System.out.println(p.getDays());[/code]

Tem um construtor que recebe um long. Tenta passar “date.getTime()” para ele.

http://joda-time.sourceforge.net/apidocs/org/joda/time/LocalTime.html

tentei tb, ta retornando zero.

as datas tem dois dias de diferença.

Consegui Eric, utilizei da seguinte forma:

System.out.println(Days.daysBetween(new DateTime(date), new DateTime(dataFinal)).getDays());

Cara eu fiz assim uma vez, mas me recomendaram usar o JodaTime então vou re-implementar.

Date startdate = db.getStartDate(project); // pega o date que está armazenado no meu banco
Date enddate = getTime(); // pega a hora atual

        Date extrahour = new Date(); // inicia o delta time
        
        int difYear = enddate.getYear() - startdate.getYear();
        int difMonth = enddate.getMonth() - startdate.getMonth();
        int difDays = enddate.getDate() - startdate.getDate();
        int difHour = enddate.getHours() - startdate.getHours();
        int difMinutes = enddate.getMinutes() - startdate.getMinutes();
        int difSeconds = enddate.getSeconds() - startdate.getSeconds();
        
        extrahour.setYear(difYear);
        extrahour.setMonth(difMonth);
        extrahour.setDate(difDays);
        extrahour.setHours(difHour);
        extrahour.setMinutes(difMinutes);
        extrahour.setSeconds(difSeconds);

Espero que ajude, tem algumas outras maneiras de realizar utilizando getTimeMiliseconds, algo assim não consegui fazer funcionar.

[quote=evertonsilvagomesjava]Consegui Eric, utilizei da seguinte forma:

System.out.println(Days.daysBetween(new DateTime(date), new DateTime(dataFinal)).getDays());

Legal. Estou para fazer um sisteminha que tem bastante manipulação de data. Aí vou correr atrás de aprender o Joda Time também.

Falou…