Сложение или вычитание дней, месяцев и лет к дате в Java

Примеры Java для добавления или вычитания дней, месяцев или лет из заданной даты с использованием различных классов даты и времени. Если вам нужно добавить или вычесть только рабочие дни, то прочтите связанную статью.

1. Сложение или вычитание дней, месяцев и лет с момента выхода Java 8

Это рекомендуемый подход, если мы используем JDK 1.8 или более позднюю версию.

Новые классы java.time LocalDate, LocalDateTime и ZonedDateTime имеют следующие дополнительные методы для добавления дней к дате.

  • plusDays(long n) – добавляет n дней к дате.
  • plusWeeks(long n) – добавляет n недель к дате.
  • plusMonths(long n) – добавляет n месяцев к дате.
  • plusYears(long n) – добавляет n лет к текущей дате.

Аналогично используйте следующие методы вычитания дней из даты.

  • minusDays(long n) – вычитает n дней из даты.
  • minusWeeks(long n) – вычитает n недель из даты.
  • minusMonths(long n) – вычитает n месяцев из даты.
  • minusYears(long n) – вычитает n лет из даты.

Перед возвратом измененной даты эти методы также изменяют другие поля даты, чтобы гарантировать, что полученная дата является допустимой.

Эти методы выдают исключение DateTimeException, если результат превышает поддерживаемый диапазон дат.

 //1. Добавьте и вычтите 1 день из LocalDateLocalDate сегодня = LocalDate.now(); //СегодняLocalDate завтра = сегодня.plusDays(1); //Плюс 1 деньLocalDate вчера = сегодня.minusDays(1); //Минус 1 день//2. Добавьте и вычтите 1 месяц из LocalDateTimeLocalDateTime now = LocalDateTime.now(); //Текущая дата и времяLocalDateTime тот жеДеньСледующийМесяц = сейчас.plusMonths(1); //2018-08-14LocalDateTime тот жеДеньПоследнийМесяц = сейчас.минусМесяцы(1); //2018-06-14//3. Прибавьте и вычтите 1 год из LocalDateTimeLocalDateTime тот жеДеньСледующийГод = сейчас.plusYears(1); //2019-07-14LocalDateTime sameDayLastYear = now.minusYears(1); //2017-07-14

2. Добавить или вычесть дни из java.util.Date

До Java 7 единственным хорошим способом добавления дней к Date было использование класса Calendar.

Метод calendar.add(int field, int amount) принимает два аргумента, т. е. тип поля и значение поля. Мы можем использовать этот метод для добавления дней, месяцев или любой единицы времени в базовый класс Date.

  • Чтобы добавить единицу времени, передайте в метод положительное число.
  • Чтобы вычесть единицу времени, передайте в метод отрицательное число.
Date today = new Date();System.out.println(today);Calendar cal = Calendar.getInstance();cal.setTime(today);// Adding timecal.add(Calendar.YEAR, 2);cal.add(Calendar.MONTH, 2);cal.add(Calendar.DATE, 2);cal.add(Calendar.DAY_OF_MONTH, 2);// Subtracting timecal.add(Calendar.YEAR, -3);cal.add(Calendar.MONTH, -3);cal.add(Calendar.DATE, -3);cal.add(Calendar.DAY_OF_MONTH, -3);// convert calendar to dateDate modifiedDate = cal.getTime();System.out.println(modifiedDate); 

Исходный код Скачать

Прокрутить вверх