Есть простое решение, которое, по крайней мере для меня, является единственным возможным решением.
Проблема в том, что все ответы, которые я вижу, подбрасываются - с помощью Joda, или Calendar, или Date, или чего-то еще- принимать во внимание только количество миллисекунд.В итоге они подсчитывают количество 24-часовых циклов между двумя датами , а не фактическое количество дней .Таким образом, что-то с 1 января 23:00 до 2 января 1:00 вернет 0 дней.
Чтобы подсчитать фактическое количество дней между startDate
и endDate
, просто выполните:
// Find the sequential day from a date, essentially resetting time to start of the day
long startDay = startDate.getTime() / 1000 / 60 / 60 / 24;
long endDay = endDate.getTime() / 1000 / 60 / 60 / 24;
// Find the difference, duh
long daysBetween = endDay - startDay;
Этовернет "1" между 2 января и 1 января.Если вам нужно посчитать день окончания, просто добавьте 1 к daysBetween
(мне нужно было сделать это в моем коде, поскольку я хотел подсчитать общее количество дней в диапазоне).
Это несколько похожена что Даниэль предложил но меньший код, я полагаю.