Dúvida: classe Calendar

1 resposta
W

Olá pessoal! :slight_smile:

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)/(30
246060*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/

1 Resposta

T

http://joda-time.sourceforge.net/

Criado 31 de outubro de 2008
Ultima resposta 31 de out. de 2008
Respostas 1
Participantes 2