Ho provato a calcolare la differenza tra due date e ho notato una cosa. Quando si calcolano solo i giorni, l'intervallo di ora legale è incluso nell'intervallo, quindi il risultato sarà più breve con 1 giorno.java.util.Date Calcolare la differenza in giorni
Per ottenere risultati accurati, è necessario considerare anche il valore delle ore.
Ad esempio:
SimpleDateFormat format = new SimpleDateFormat("MM-dd-yyyy");
Date dfrom = format.parse("03-29-2015");
Date dto = format.parse("03-30-2015");
long diff = dto.getTime() - dfrom.getTime();
System.out.println(diff);
System.out.println("Days: "+diff/(24 * 60 * 60 * 1000));
System.out.println("Hours: "+diff/(60 * 60 * 1000) % 24);
uscita:
82800000
Days: 0
Hours: 23
Qualcuno ha una soluzione migliore?
È possibile utilizzare java.time (Java 8) o Joda Time? Entrambi renderanno questo * molto * più semplice. –
Possibile duplicato di [Calcolo della differenza tra due istanze di data Java] (http://stackoverflow.com/questions/1555262/calculating-the-difference-between-two-java-date-stance) – Tom
La causa principale è la tua ipotesi nella riga 6 che ogni giorno ha 24 ore, quando sai già che l'intervallo che stai misurando contiene un giorno di sole 23 ore. –