Я пытаюсь рассчитать разницу между двумя датами. Разница состоит из оставшихся дней, часов, минут, секунд.Вычисление ошибки разницы во времени
Я использую этот метод:
public static void computeDiff(Date date2) {
Date date1 = new Date();
long diffInMillies = date2.getTime() - date1.getTime();
long milliesRest = diffInMillies;
for (TimeUnit unit : timeUnitsArrayList) {
long diff = unit.convert(milliesRest, TimeUnit.MILLISECONDS);
long diffInMilliesForUnit = unit.toMillis(diff);
milliesRest -= diffInMilliesForUnit;
result.put(unit, diff);
}
}
/*
TimeUnit = java.util.concurrent.TimeUnit
timeUnitsArrayList = A list with units: DAYS, HOURS, MINUTES, SECONDS
date1 = java.util.Date (date now)
date2 = java.util.Date (a date with time 00:00:00)
*/
Я привожу пример: если я хочу разницу между сегодняшним днем и до 20 марта 2015, разница будет в порядке (8 дней, X часов, Y минут, Z секунд), но если я выберу более старую дату, например, 20 апреля 2015 года, разница составит 39 дней (нормально), X - 1 час (что не так, потому что неправильно вычисляется), Y минут (ok), Z секунд (ok).
Является ошибкой Java или ошибкой в моем коде? Потому что, если я выбрать более раннюю дату, часы в порядке, но если я выбрать более старую дату я получаю часы неправильно (один меньше часа)
Спасибо
возможно дубликат [Вычисление разницы между датой экземпляров Два Java] (http://stackoverflow.com/questions/1555262/calculating-the-difference-between-two-java-date-instances) –
летнее время –
Это действительно помогло бы, если бы вы предоставили конкретный пример в виде короткой, но полной программы, демонстрирующей проблему, объясняя * почему * вы ожидаете, что результат будет определенным образом. Похоже, это почти наверняка проблема летнего времени, но трудно дать ответ без дополнительной информации. –