В Java существует множество способов вычислить количество дней между двумя датами. Ниже будет подробно рассмотрено три аспекта: использование API даты и времени Java 8, использование класса Calendar и использование класса Date.
В Java 8 появился новый API даты и времени, в котором метод ChronoUnit.DAYS.between() может удобно вычислять количество дней между двумя датами.
Во-первых, вам нужно создать два объекта LocalDate для представления двух дат. Затем количество дней между этими двумя датами можно рассчитать с помощью метода ChronoUnit.DAYS.between(). Конкретный код выглядит следующим образом:
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
public class Main {
public static void main(String[] args) {
LocalDate date1 = LocalDate.of(2020, 1, 1);
LocalDate date2 = LocalDate.of(2020, 12, 31);
long daysBetween = ChronoUnit.DAYS.between(date1, date2);
System.out.println("Days between: " + daysBetween);
}
}
Если это до Java 8, мы можем использовать класс Calendar для расчета количества дней между двумя датами.
Следует отметить, что метод Calendar вычисляет количество миллисекунд, поэтому нам необходимо преобразовать результат в дни. Конкретный код выглядит следующим образом:
import java.util.Calendar;
public class Main {
public static void main(String[] args) {
Calendar calendar1 = Calendar.getInstance();
Calendar calendar2 = Calendar.getInstance();
calendar1.set(2020, Calendar.JANUARY, 1);
calendar2.set(2020, Calendar.DECEMBER, 31);
long milliseconds1 = calendar1.getTimeInMillis();
long milliseconds2 = calendar2.getTimeInMillis();
long diff = milliseconds2 - milliseconds1;
long daysBetween = diff / (24 * 60 * 60 * 1000);
System.out.println("Days between: " + daysBetween);
}
}
Аналогично, в версиях до Java 8 вы также могли использовать класс Date для расчета количества дней между двумя датами.
Сначала создайте два объекта Date и получите их метки времени (в миллисекундах), затем вычислите разницу между двумя метками времени и, наконец, преобразуйте разницу в дни. Конкретный код выглядит следующим образом:
import java.util.Date;
public class Main {
public static void main(String[] args) {
Date date1 = new Date(2020, 0, 1); // Month is 0-based
Date date2 = new Date(2020, 11, 31); // Month is 0-based
long milliseconds1 = date1.getTime();
long milliseconds2 = date2.getTime();
long diff = milliseconds2 - milliseconds1;
long daysBetween = diff / (24 * 60 * 60 * 1000);
System.out.println("Days between: " + daysBetween);
}
}