Мы уже видели, как рассчитать количество Дней между двумя датами до Java 8.

Сегодня мы обсудим, как рассчитать количество дней между двумя датами в Java 8.

Чтобы вычислить количество дней между двумя датами, мы можем использовать метод DAYS.between() класса java.time.temporal.ChronoUnit.

Синтаксис DAYS.between():

long noOfDaysBetween = DAYS.between(startDate, endDate);
// or alternatively
long noOfDaysBetween = startDate.until(endDate, DAYS);

startDate является инклюзивным, а endDate является эксклюзивным при расчете noOfDaysBetween.

  1. Количество дней между двумя датами с использованием метода DAYS.between()
package com.algorithmforum.date;
import java.time.LocalDate;
import java.time.Month;
import java.time.temporal.ChronoUnit;
public class DaysDiffJava8 {
 public static void main(String[] args) {
  // 24-May-2017, change this to your desired Start Date
  LocalDate dateBefore = LocalDate.of(2017, Month.MAY, 24);
  
  // 29-July-2017, change this to your desired End Date
  LocalDate dateAfter = LocalDate.of(2017, Month.JULY, 29);
  
  long noOfDaysBetween = ChronoUnit.DAYS.between(dateBefore, dateAfter);
  System.out.println(noOfDaysBetween);
 }
}

2. Разбор дат и последующее вычисление дней между ними

В приведенном выше примере мы передаем дату в желаемом формате, однако, если у вас есть дата в виде строки, вы можете проанализировать дату, чтобы преобразовать ее в Java 8 LocalDate. После разбора мы вычисляем дни между аналогично приведенному выше примеру.

Вы можете преобразовать дату любого формата в нужный формат. Обратитесь к учебнику по Java — парсингу даты для примеров парсинга даты.

package com.algorithmforum.date;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
public class DaysDiffJava8 {
 public static void main(String[] args) {
  String dateBeforeString = "2017-05-24";
  String dateAfterString = "2017-07-29";
  // Parsing the date
  LocalDate dateBefore = LocalDate.parse(dateBeforeString);
  LocalDate dateAfter = LocalDate.parse(dateAfterString);
  // calculating number of days in between
  long noOfDaysBetween = ChronoUnit.DAYS.between(dateBefore, dateAfter);
  // displaying the number of days
  System.out.println(noOfDaysBetween);
 }
}