Я знаю, что на SO есть много вопросов о том, как его получить, но я хочу и пример использования нового Java 8 Date API. Я также знаю библиотеку JodaTime, но я хочу работать без внешних библиотек.
Функция должна пожаловаться на эти ограничения:
- Предотвратить ошибки из даты сохранения
- Входными данными являются два объекта Date (без времени я знаю localdatetime, но мне нужно делать с экземплярами даты)
DAYS.between(localDate1, localDate2)
.Ответы:
Если вы хотите логических календарных дней , используйте
DAYS.between()
метод изjava.time.temporal.ChronoUnit
:Если вы хотите буквальные 24-часовые дни ( продолжительность ), вы можете использовать
Duration
класс вместо:Для получения дополнительной информации обратитесь к этому документу .
источник
Duration.between(today.atTime(0, 0), yesterday.atTime(0, 0)).toDays()
.today.atTime(0, 0)
тебя можно сделатьtoday.atStartOfDay()
.ChronoUnit.DAYS.between(firstDate, secondDate)
На основе комментариев VGR вот что вы можете использовать:
источник
Вы можете использовать
until()
:источник
until
заключается в том, что она возвращает объект Period . Это вернет количество лет / месяцев / дней между двумя датами, а не фактическое количество дней. И getDays () для Period возвращает только часть дней (без учета количества лет или месяцев), а не общее количество дней. Вторая версия работает точно так, как нужно, чтобы получить количество дней между двумя датами.Вы можете использовать
DAYS.between
отjava.time.temporal.ChronoUnit
например
источник
Мы можем использовать метод Между () из перечисления ChronoUnit :
ChronoUnit.DAYS считать дни, которые завершены 24 часа .
источник
Используйте ДНИ в enum java.time.temporal.ChronoUnit . Ниже приведен пример кода:
Выходные данные: * Количество дней между датой начала: 2015-03-01 и датой окончания: 2016-03-03: ==> 368. ** Количество дней между датой начала: 2016-03-03 и датой окончания: 2015-03-01 is ==> -368 *
источник
Все говорят, что используют ChronoUnit.DAYS.between, но это просто делегирует другой метод, который вы можете вызвать сами. Так что вы также можете сделать
firstDate.until(secondDate, ChronoUnit.DAYS)
.Документы для обоих на самом деле упоминают оба подхода и говорят, что использовать тот, который является более читабельным.
источник
Ну вот:
источник
Получить количество дней до Рождества с текущего дня, попробуйте это
источник
Если цель состоит в том, чтобы просто получить разницу в днях, и поскольку вышеупомянутые ответы упоминают о методах делегатов, то хотелось бы указать, что однажды можно также просто использовать -
источник
источник
Я знаю, что этот вопрос для Java 8, но с Java 9 вы можете использовать:
источник
Используйте класс или метод, который лучше всего соответствует вашим потребностям:
Длительность измеряет количество времени, используя значения на основе времени (секунды, наносекунды).
Период использует значения на основе даты (годы, месяцы, дни).
Метод ChronoUnit.between полезен, когда вы хотите измерить количество времени только в одной единице времени, например, днях или секундах.
https://docs.oracle.com/javase/tutorial/datetime/iso/period.html
источник