In the Java Date-Time API, the plus
and minus
methods can be used to calculate and modify dates, times, date/times, and durations.
Each temporal class (LocalDate
, LocalTime
, LocalDateTime
, and Duration
) includes these methods.
Here’s a basic example using the LocalDate class:
package org.kodejava.datetime;
import java.time.LocalDate;
public class PlusMinusExample {
public static void main(String[] args) {
LocalDate date = LocalDate.now();
// Calculate the date 5 days into the future
LocalDate futureDate = date.plusDays(5);
System.out.println("Date five days in the future: " + futureDate);
// Calculate the date 5 days in the past.
LocalDate pastDate = date.minusDays(5);
System.out.println("Date five days in the past: " + pastDate);
}
}
Output:
Date five days in the future: 2024-01-22
Date five days in the past: 2024-01-12
You can also use plusWeeks
, plusMonths
, plusYears
, minusWeeks
, minusMonths
, minusYears
methods in a similar manner to add or subtract the respective time period.
Note: All the datetime manipulation methods return a new instance of the date/time object; they do not modify the original object because the classes are immutable.
The plus()
and minus()
methods in the Java Date-Time API offer finer control over date-time arithmetic by allowing you to add or subtract different types of date-time units such as days, months, or years.
The plus()
method is used to add specific time units to a date or time, while the minus()
method is used to subtract specific time units.
Here’s an example:
package org.kodejava.datetime;
import java.time.LocalDate;
import java.time.Period;
public class PlusMinusOtherExample {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
// 1 year, 2 months, and 3 days.
Period periodToAdd = Period.of(1, 2, 3);
LocalDate futureDate = today.plus(periodToAdd);
System.out.println("Date after adding a period: " + futureDate);
// 2 years, 4 months, and 6 days.
Period periodToSubtract = Period.of(2, 4, 6);
LocalDate pastDate = today.minus(periodToSubtract);
System.out.println("Date after subtracting a period: " + pastDate);
}
}
The Period
class is part of the Java Date-Time API and is used to represent a quantity of time in terms of years, months, and days.
Remember, you can create a Period
using the Period.of(int years, int months, int days)
method, where years
, months
, and days
are the specific units of time to be represented.
Here are examples using LocalTime
and LocalDateTime
:
package org.kodejava.datetime;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.temporal.ChronoUnit;
public class PlusMinusTime {
public static void main(String[] args) {
// Creating a LocalTime object and adding/subtracting hours, minutes, seconds
LocalTime time = LocalTime.now();
LocalTime futureTime = time.plus(2, ChronoUnit.HOURS);
System.out.println("Time after two hours: " + futureTime);
LocalTime pastTime = time.minus(30, ChronoUnit.MINUTES);
System.out.println("Time 30 minutes ago: " + pastTime);
// Creating a LocalDateTime object and adding/subtracting days, months, years
LocalDateTime dateTime = LocalDateTime.now();
LocalDateTime futureDateTime = dateTime.plus(1, ChronoUnit.YEARS);
System.out.println("Date and Time one year into the future: " + futureDateTime);
LocalDateTime pastDateTime = dateTime.minus(2, ChronoUnit.MONTHS);
System.out.println("Date and Time two months ago: " + pastDateTime);
// You can also use plus or minus Days, Weeks, Months, Years directly
LocalDateTime exactDateTimeFuture = dateTime.plusDays(1).plusWeeks(1).plusMonths(1).plusYears(1);
System.out.println("Date and Time after one day, week, month, and year: " + exactDateTimeFuture);
}
}
Note that when we are adding/subtracting units like hours, minutes, and seconds, we use java.time.temporal.ChronoUnit
. When adding/subtracting days, weeks, months, and years, we use directly plusDays
or minusDays
and so on.
- How do I get number of each day for a certain month in Java? - September 8, 2024
- How do I get operating system process information using ProcessHandle? - July 22, 2024
- How do I sum a BigDecimal property of a list of objects using Java Stream API? - July 22, 2024