Я написал следующий код для нахождения дней между двумя датами
startDateValue = newDate(startDate); endDateValue = newDate(endDate); long diff = endDateValue.getTime() - startDateValue.getTime(); long seconds = diff / 1000; long minutes = seconds / 60; long hours = minutes / 60; long days = (hours / 24) + 1; Log.d("days", "" + days);
Когда начальная и конечная даты равны 3/3/2017 и 2/3/2017 соответственно, отображается количество дней 29. Хотя, когда они относятся к одному дню, отображается 1.(Количество дней, на которые человек берет отпуск.Итак, если кто-то берет отпуск на один день, он должен выбрать ту же дату начала и окончания.Итак, в данном случае он взял отпуск на два дня).
Что я делаю не так? Спасибо, что уделили мне время.
Примечание: Пожалуйста, не используйте конструктор date . Проверьте принятый ответ ниже. Используйте simpledateformat или Joda time. Конструктор Date устарел.
Переведено автоматически
Ответ 1
Ваш код для генерации объекта date:
Date date = newDate("2/3/2017"); //deprecated
Вы получаете 28 дней в качестве ответа, потому что, согласно Date(String) конструктору, он считает день = 3, месяц = 2 и год = 2017
Вы можете преобразовать строку в дату следующим образом:
Используйте приведенный выше шаблон, чтобы создать объект Date. Затем используйте приведенный ниже код для вычисления дней между двумя датами. Надеюсь, это прояснит ситуацию.