Я попытался рассчитать разницу между двумя датами, и я заметил одну вещь. При расчете только дней начинается переход на летнее время, поэтому результат будет короче с 1 днем.java.util.Date Рассчитать разницу в днях
Для получения точных результатов необходимо учитывать значение часов.
Например:
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);
Выход:
82800000
Days: 0
Hours: 23
ли кто-нибудь есть лучшее решение?
Можете ли вы использовать java.time (Java 8) или Joda Time вместо этого? Оба сделают это намного проще. –
Возможный дубликат [Расчет разницы между двумя экземплярами дат Java] (http://stackoverflow.com/questions/1555262/calculating-the-difference-between-two-java-date-instances) – Tom
Основная причина - ваше предположение в строке 6, что каждый день имеет 24 часа, когда вы уже знаете, что интервал, который вы измеряете, содержит день, который составляет всего 23 часа. –