2015-10-18 2 views
0

Я пытаюсь использовать класс продолжительности Joda-Time для расчета точных дней разницы между двумя днями. Значение Я хотел бы, чтобы результат был чем-то вроде 25.48 дней, а не только 25 дней. Сейчас у меня есть:Joda-Time duration в точные десятичные дни

private static final double MILLISECONDS_IN_DAY = 86400000; 

DateTime today = new DateTime(); 
Duration dur = new Duration(foo.getExpirationDate(), today); 
double diff_days = dur.getMillis()/MILLISECONDS_IN_DAY; 

Но мне интересно, если есть способ совместить 1-й и последней строки в одну, что только дает мне двойной.

ответ

2

Вы можете устранить первую строку, используя константу Joda-Time, вместо того чтобы объявлять свои собственные.

org.joda.time.DateTimeConstants.MILLIS_PER_DAY 

Не забывайте, что если вы пытаетесь рассчитать другую дату, может быть лучший способ сделать это. Ошибки в календаре, такие как високосные годы, хорошо учитываются в течение Joda-Time.

+0

константа очень полезна, спасибо. У вас есть идея лучшего пути? – Richard

+0

Способы «плюс» и «минус» объекта DateTime - это лучшие способы получить от одного DateTime к другому, добавив или вычитая продолжительность или период. [DateTime.plus (ReadablePeriod period)] (http://joda-time.sourceforge.net/apidocs/org/joda/time/DateTime.html#plus (org.joda.time.ReadablePeriod)) Если все, что вы хотите сделать, это рассчитать количество дней между двумя моментами, приведенный выше код будет точным для любой продолжительности, которая включает нормальные длинные дни. Если вы хотите совершенную точность, вы должны использовать период и преобразовывать каждый элемент периода в дни, а затем суммировать их. –

Смежные вопросы