Содержание
В новом Date Time Java 8 API появилось много методов для удобного сложения и вычитания даты и времени. Следует особо отметить группу методов minus и plus, которые позволяют легко изменять каждую составляющую объекта даты и времени. Рассмотрим эти методы подробнее:
LocalDateTime minusYears(long years) | Минус указанное количество лет |
LocalDateTime minusMonths(long months) | Минус указанное количество месяцев |
LocalDateTime minusWeeks(long weeks) | Минус указанное количество недель |
LocalDateTime minusDays(long days) | Минус указанное количество дней |
LocalDateTime minusHours(long hours) | Минус указанное количество часов |
LocalDateTime minusMinutes(long minutes) | Минус указанное количество минут |
LocalDateTime minusSeconds(long seconds) | Минус указанное количество секунд |
LocalDateTime minusNanos(long nanos) | Минус указанное количество наносекунд |
LocalDateTime plusYears(long years) | Плюс указанное количество лет |
LocalDateTime plusMonths(long months) | Плюс указанное количество месяцев |
LocalDateTime plusWeeks(long weeks) | Плюс указанное количество недель |
LocalDateTime plusDays(long days) | Плюс указанное количество дней |
LocalDateTime plusHours(long hours) | Плюс указанное количество часов |
LocalDateTime plusMinutes(long minutes) | Плюс указанное количество минут |
LocalDateTime plusSeconds(long seconds) | Плюс указанное количество секунд |
LocalDateTime plusNanos(long nanos) | Плюс указанное количество наносекунд |
Классы LocalDate и LocalTime также имеют соответствующие методы plus*() и minus*().
Ниже представлен пример использования методов plus и minus:
import java.time.LocalDateTime;
import java.time.Month;
public class Main {
public static void main(String[] args) {
LocalDateTime dateTime = LocalDateTime.of(
2002, Month.JANUARY, 10,
22, 56, 59, 999_999_000
);
LocalDateTime twelveYearsAgo = dateTime.minusYears(12);
System.out.println("12 years ago: " + twelveYearsAgo);
LocalDateTime modifiedDate = dateTime
.plusWeeks(2)
.minusHours(1);
System.out.println("modified: " + modifiedDate);
}
}
// output:
// 12 years ago: 1990-01-10T22:56:59.999999
// modified: 2002-01-24T21:56:59.999999
Так как объекты LocalDateTime являются неизменяемыми, каждый из методов minus и plus возвращает вновь созданный объект LocalDateTime. Поэтому есть возможность создавать цепочки вызовов методов как это показано в примере выше:
dateTime
.plusWeeks(2)
.minusHours(1)
Более того, можно использовать и другие операции вместе с операциями сложения и вычитания. Например:
import java.time.LocalDateTime;
import java.time.Month;
public class Main {
public static void main(String[] args) {
LocalDateTime dateTime = LocalDateTime
.of( 2002, Month.JANUARY, 10, 22, 56 )
.plusWeeks(2)
.minusHours(1)
.withMinute(43);
System.out.println(dateTime);
}
}
// output:
// 2002-01-24T21:43
Об упомянутой операции with над датой и временем будет рассказано в следующией статье.
< | Форматирование даты в Java 8 | Дата и время в Java 8. Изменение даты и времени | > |