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);
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.
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…
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")));
}
}
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