Olá pessoal! 
Gostaria de saber como faço para achar o valor da diferença entre duas
datas em:
Anos e Meses
Meu programa estava assim:
public class M5E6
{
public static void main(String[] args) {
Calendar data1 = Calendar.getInstance();
Calendar data2 = Calendar.getInstance();
data2.set(Calendar.DAY_OF_MONTH, 1);
data2.set(Calendar.MONTH, 0);
data2.set(Calendar.YEAR, 2014);
data2.set(Calendar.HOUR_OF_DAY, 0);
data2.set(Calendar.MINUTE, 0);
data2.set(Calendar.SECOND, 0);
long d1 = data1.getTimeInMillis();
long d2 = data2.getTimeInMillis();
System.out.println("Faltam para 2014:");
System.out.println("Anos: "+(int)((((d2-d1)/(24*60*60*1000))/30)/12));
System.out.println("Meses: "+(int)(((d2-d1)/(24*60*60*1000))/30));
System.out.println("Dias: "+(int)((d2-d1)/(24*60*60*1000)));
System.out.println("Horas: "+(int)((d2-d1)/(60*60*1000)));
System.out.println("Minutos: "+(int)((d2-d1)/(60*1000)));
System.out.println("Segundos: "+(int)((d2-d1)/1000));
}
}
Quando eu faço "System.out.println("Meses: “+(int)(((d2-d1)/(2460601000))/30));" colocando
o ‘30’ junto com os demais que estão multplicando "System.out.println("Meses: "+(int)((d2-d1)/(30246060*1000)));”
o valor sai negativo… Será que tem algo de errado? Obs.: o msmo se dá com os anos, ficando um número incorreto.
E tbm gostaria de saber se tem como eu colocar o número de meses exato, pois se multiplicar
por 30, não será o mais correto pq o número de dias é diferente em cada mês.
Agradeço desde já! o/