Вычисление различия в датах в Java

17
задан 4 revs, 2 users 50% 24 March 2016 в 05:57
поделиться

4 ответа

я знаю, что простой путь состоит в том, чтобы взять различие времени в миллисекундах и затем преобразовать это в дни. Однако я хотел знать, работает ли это во всех случаях (с переходом на летнее время, и т.д.).

, Если Ваши времена получены из дат UTC, или они - просто различие между двумя вызовами к System.getCurrentTimeMillis () измеренный в той же системе, Вы получите верный номер миллисекунд как различие, независимое от любых проблем часового пояса. (который является, почему все должно использовать UTC в качестве формата устройства хранения данных - намного легче пойти от UTC-> местное время; при попытке пойти другим путем тогда, необходимо сохранить локальный часовой пояс наряду с местным временем - или попытаться вывести его, gack!)

Что касается превращения этого во многие дни, необходимо просто быть в состоянии разделиться на 86400000... с протестом, что существует случайное , прыгают вторые через год или около этого.

6
ответ дан 30 November 2019 в 13:40
поделиться

Java, не отсутствующий очень, если Вы смотрите на открытый исходный код: попробуйте Joda-разовый .

8
ответ дан 30 November 2019 в 13:40
поделиться

Я не соглашаюсь с заявлением, что Java не имеет механизма для вычисления различия между датами.

Java был разработан для глобального использования. Это было разработано так, чтобы не было понятия даты, существует только понятие "времени в миллисекундах". Любая интерпретация такого всемирного времени как время и дата в определенном месте в соответствии с определенным соглашением является просто проекцией или представлением.

календарный класс используется для превращения этого вида абсолютного времени в даты. Можно также добавить или вычесть компоненты даты, если Вы действительно должны. Единственным способом обеспечить различие с точки зрения компонентов между двумя разами был бы Календарь, сгенерированный и конкретный. Таким образом Вы могли утверждать, что стандартная библиотека не включает достаточно умный Григорианский календарь, и я согласился бы, что она оставляет некоторых для желания.

Однако существуют многочисленные реализации этого вида функциональности, я вижу, что другие обеспечивают примеры.

0
ответ дан 30 November 2019 в 13:40
поделиться

Реализация Java дат плоха. Если Вы находите Joda-разовый слишком сложный, попробуйте мой небольшой вклад в открытый исходный код: http://calendardate.sourceforge.net/javadoc/index.html

0
ответ дан 30 November 2019 в 13:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: