я знаю, что простой путь состоит в том, чтобы взять различие времени в миллисекундах и затем преобразовать это в дни. Однако я хотел знать, работает ли это во всех случаях (с переходом на летнее время, и т.д.).
, Если Ваши времена получены из дат UTC, или они - просто различие между двумя вызовами к System.getCurrentTimeMillis () измеренный в той же системе, Вы получите верный номер миллисекунд как различие, независимое от любых проблем часового пояса. (который является, почему все должно использовать UTC в качестве формата устройства хранения данных - намного легче пойти от UTC-> местное время; при попытке пойти другим путем тогда, необходимо сохранить локальный часовой пояс наряду с местным временем - или попытаться вывести его, gack!)
Что касается превращения этого во многие дни, необходимо просто быть в состоянии разделиться на 86400000... с протестом, что существует случайное , прыгают вторые через год или около этого.
Java, не отсутствующий очень, если Вы смотрите на открытый исходный код: попробуйте Joda-разовый .
Я не соглашаюсь с заявлением, что Java не имеет механизма для вычисления различия между датами.
Java был разработан для глобального использования. Это было разработано так, чтобы не было понятия даты, существует только понятие "времени в миллисекундах". Любая интерпретация такого всемирного времени как время и дата в определенном месте в соответствии с определенным соглашением является просто проекцией или представлением.
календарный класс используется для превращения этого вида абсолютного времени в даты. Можно также добавить или вычесть компоненты даты, если Вы действительно должны. Единственным способом обеспечить различие с точки зрения компонентов между двумя разами был бы Календарь, сгенерированный и конкретный. Таким образом Вы могли утверждать, что стандартная библиотека не включает достаточно умный Григорианский календарь, и я согласился бы, что она оставляет некоторых для желания.
Однако существуют многочисленные реализации этого вида функциональности, я вижу, что другие обеспечивают примеры.
Реализация Java дат плоха. Если Вы находите Joda-разовый слишком сложный, попробуйте мой небольшой вклад в открытый исходный код: http://calendardate.sourceforge.net/javadoc/index.html