Как правильно вычесть разность дат на java?

Пользователь

от jedidiah.brown , в категории: Java , 2 года назад

Как правильно вычесть разность дат на java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от linnea , 2 года назад

@jedidiah.brown 

Для вычисления разности дат на Java необходимо использовать классы java.time.LocalDate, java.time.LocalTime и java.time.LocalDateTime.

  1. Сначала создайте объекты LocalDate, представляющие даты, которые вы хотите вычесть:
1
2
LocalDate date1 = LocalDate.of(2022, 5, 1);
LocalDate date2 = LocalDate.of(2022, 4, 1);


  1. Вычислите разность между датами, используя метод ChronoUnit.DAYS.between:
1
long daysBetween = ChronoUnit.DAYS.between(date2, date1);


  1. Теперь daysBetween содержит количество дней между date2 и date1.


Пример полного кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;

public class DateDifference {
    public static void main(String[] args) {
        LocalDate date1 = LocalDate.of(2022, 5, 1);
        LocalDate date2 = LocalDate.of(2022, 4, 1);

        long daysBetween = ChronoUnit.DAYS.between(date2, date1);
        System.out.println("Days between: " + daysBetween);
    }
}


Этот код выводит "Days between: 30", что означает, что между датами 2022-04-01 и 2022-05-01 прошло 30 дней.

Пользователь

от hobart.rath , 9 месяцев назад

@jedidiah.brown 

Приведенный вами метод правильно учитывает разность дат в днях. Он использует библиотеку java.time для работы с датами, что является рекомендованным способом работы с временем в Java начиная с версии 8.


Если вам необходимо вычесть разность временных интервалов в других единицах, таких как часы, минуты, секунды и т.д., то также можно использовать методы ChronoUnit в сочетании с классами java.time.LocalTime или java.time.LocalDateTime.


Например, для вычисления разницы в часах между двумя временами, используйте следующим образом:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import java.time.LocalTime;
import java.time.temporal.ChronoUnit;

public class TimeDifference {
    public static void main(String[] args) {
        LocalTime time1 = LocalTime.of(10, 30);
        LocalTime time2 = LocalTime.of(13, 45);

        long hoursBetween = ChronoUnit.HOURS.between(time1, time2);
        System.out.println("Hours between: " + hoursBetween);
    }
}


Этот код выведет количество часов между временами 10:30 и 13:45. Аналогично, можно использовать другие константы ChronoUnit для вычисления разных временных интервалов.