Нахождение количества дней

У меня есть две отметки времени в формате даты.

Как я могу получить количество дней, которые присутствуют в данном диапазоне?

SimpleDateFormat sdf = new SimpleDateFormat("dd MM yyyy HH:mm:ss");
Date begin=sdf.parse("27 02 2014 23:00:00");
Date end=sdf.parse("01 03 2014 00:00:10");

В приведенном выше случае это должно быть 3, то есть (27 февраля, 28 февраля и 1 января)

int days = (int) (end.getTime() - begin.getTime())/(1000*3600*24) ;

Вышеупомянутый метод не помогает, поскольку он учитывает всю отметку времени.


person n00b    schedule 29.07.2014    source источник


Ответы (1)


Вы можете использовать JodaTime.

import org.joda.*;
import org.joda.time.*;

DateTime start = new DateTime(2014, 02, 27, 0, 0, 0, 0);
DateTime end = new DateTime(2014, 03, 1, 01, 0, 0, 0);
Interval interval = new Interval(start, end);
Period period = interval.toPeriod();
int days = period.getDays();

Дополнительная информация здесь.

Однако, если вы хотите найти количество дней в диапазоне, не учитывая час, а только день, месяц и год... Почему бы вам не делать именно то, что вы делаете, но анализировать даты только для получения дня, месяца и год? Таким образом, формула, которую вы используете для определения количества дней, всегда будет работать.

person Balduz    schedule 29.07.2014