Contar Dias?

Ola pessoal bom tem um codigo aki mais nao esta funcionando bem

Bom a minha duvida é o seguinte quero pelar uma data inicio e data final e conta os dias bom no codigo q eu tenho peguei uma intervalo e ele me traz 60 dias fiz no excel e no VB o certo é 61 dias eu gostaria q vcs olhassem o codigo

Calendar xmas = new GregorianCalendar(2006, 8, 23);
	    
	    Calendar newyears = new GregorianCalendar(2006, 10, 23);
	    
	    // Determine which is earlier
	    boolean b = xmas.after(newyears);            // false
	    b = xmas.before(newyears);                   // true
	    
	    
	    // Get difference in milliseconds
	    long diffMillis = newyears.getTimeInMillis()-xmas.getTimeInMillis();
	    System.out.println(diffMillis);
	    
	    // Get difference in seconds
	    long diffSecs = diffMillis/(1000);           // 604800
	    System.out.println(diffSecs);
	    // Get difference in minutes
	    long diffMins = diffMillis/(60*1000);        // 10080
	    System.out.println(diffMins);
	    // Get difference in hours
	    long diffHours = diffMillis/(60*60*1000);    // 168
	    System.out.println(diffHours);
	    // Get difference in days
	    long diffDays = diffMillis/(24*60*60*1000);  // 7
	    System.out.println(diffDays);

Espero respostas
Desde ja obrigado…

Isso é coisa do horário de verão, que vira em outubro.
Pegue a diferença entre as datas em segundos (diffSecs), some uma hora (ou seja, 3600 segundos) e continue com suas contas.

Bom thingol eu fiz isso q vc falou e o 60 dias continua…

Nosssa preciso contar os dias de intervalo para um calculo de desconto de cheque…

Alguem tem uma solução…

OK, não tinha lido direito seu código. Pegue 60 * 60 * 1000 milissegundos, e some à diferença em milissegundos (diffMillis ). Refaça as contas.

Thingol ,

Cara ja tentei fazer mais nao bate os dias no intervalo de 23/08/2006 a 23/10/2006 esta aparecendo 60 mais o correto é 61 no excel e no banco SQL 2000 aparece 61 mais nessa forma q eu estou fazendo ele so aparece 60 bom eu acho q ele esta contando os meses como 30 dias…

Bom espero soluções…

Desde ja Obrigado…

Acho que não fui bem claro.

import java.text.*;
import java.util.*;

class DiferencaEntreDatas {
    public static int diferenca (Date dt1, Date dt2) {
        //-- Supondo que hh:mm:ss == 00:00:00 para simplificar.
        long tempo1 = dt1.getTime();
        long tempo2 = dt2.getTime();
        long difTempo = tempo1 - tempo2; // tempo em ms
        //-- Note que, por causa do horário de verão, devemos acrescentar uma hora, por via
        //-- das dúvidas
        return (int) ((difTempo + 60L * 60 * 1000) / (24L * 60 * 60 * 1000));
    }
    public static void main(String[] args) throws Exception {
        DateFormat df = new SimpleDateFormat ("dd/MM/yyyy");
        // Imprime 61, como seria de se esperar.
        System.out.println (diferenca (df.parse ("23/10/2006"), df.parse ("23/08/2006")));
    }
}

Valeu Thingol…

Muito Obrigado funcionou diretinho…

Agora vai ter problema qdo for ano bissexto?? Tenho q alterar algo???

Não tem problema, nem quando o ano tiver um “leap second” (um segundo adicional que se adiciona a alguns anos - acho que de 10 em 10 anos aproximadamente). Quanto mais com anos bissextos :stuck_out_tongue: