Как вычесть даты в java?

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

от willis.streich , в категории: Java , год назад

Как вычесть даты в java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

от jaren , год назад

@willis.streich 

В Java можно вычесть две даты, используя классы Date и Calendar.


Вот пример использования класса Date:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import java.util.Date;

public class DateSubtractionExample {
    public static void main(String[] args) {
        // Создание двух дат
        Date date1 = new Date(2020, 5, 1); // Предпочтительно использовать класс Calendar или LocalDate вместо класса Date
        Date date2 = new Date(2020, 4, 1);

        // Вычисление разницы между датами
        long difference = date1.getTime() - date2.getTime();

        // Вывод разницы в миллисекундах
        System.out.println("Разница в миллисекундах: " + difference);

        // Вывод разницы в днях
        long differenceInDays = difference / (24 * 60 * 60 * 1000);
        System.out.println("Разница в днях: " + differenceInDays);
    }
}


Вот пример использования класса Calendar:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.util.Calendar;

public class CalendarSubtractionExample {
    public static void main(String[] args) {
        // Создание двух объектов Calendar и установка дат
        Calendar calendar1 = Calendar.getInstance();
        calendar1.set(2020, 5, 1); // месяц начинается с 0 для января

        Calendar calendar2 = Calendar.getInstance();
        calendar2.set(2020, 4, 1);

        // Получение времени в миллисекундах
        long timeInMillis1 = calendar1.getTimeInMillis();
        long timeInMillis2 = calendar2.getTimeInMillis();

        // Вычисление разницы между двумя датами
        long difference = timeInMillis1 - timeInMillis2;

        // Вывод разницы в миллисекундах
        System.out.println("Разница в миллисекундах: " + difference);

        // Вывод разницы в днях
        long differenceInDays = difference / (24 * 60 * 60 * 1000);
        System.out.println("Разница в днях: " + differenceInDays);
    }
}


Обратите внимание, что класс Date является устаревшим, и рекомендуется использовать классы Calendar или LocalDate для работы с датами в Java.

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

от william_stoltenberg , год назад

@willis.streich 

В Java можно вычесть даты, используя класс LocalDate и метод ChronoUnit.between() из пакета java.time.


Вот пример расчета разницы между двумя датами:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;

public class Main {
    public static void main(String[] args) {
        LocalDate date1 = LocalDate.of(2021, 1, 1);
        LocalDate date2 = LocalDate.of(2021, 12, 31);

        long days = ChronoUnit.DAYS.between(date1, date2);
        System.out.println("Разница в днях: " + days);

        long months = ChronoUnit.MONTHS.between(date1, date2);
        System.out.println("Разница в месяцах: " + months);

        long years = ChronoUnit.YEARS.between(date1, date2);
        System.out.println("Разница в годах: " + years);
    }
}


Результат:

1
2
3
Разница в днях: 364
Разница в месяцах: 11
Разница в годах: 0


Вы можете использовать различные единицы измерения, такие как DAYS, MONTHS, YEARS, чтобы вычесть даты в соответствующих единицах измерения.