In the previous example we manipulate the value of LocalDate
by adding or subtracting the value of date object by days, months, years using methods like plusMonths()
or minusDays()
. Or by changing the year or the month of the date object using methods like withYear()
or withMonth()
.
But there are times that we want to manipulate the date object so that we can get the first day of the month or the last day of the month. We want to manipulate the date value to advance the date to the first Monday after the current day or the last the of the year.
To manipulate the date object in this way we can use the with()
method and pass a TemporalAdjuster
object as an argument. Fortunately, the Date and Time API already provide some commonly used TemporalAdjuster
. These TemporalAdjuster
are provided as a static factory methods that we can find in the java.time.temporal.TemporalAdjusters
class.
The following example is a code snippet to manipulate the date object using TemporalAdjuster
/ TemporalAdjusters
class.
package org.kodejava.datetime;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;
public class DateManipulationWithTemporalAdjuster {
public static void main(String[] args) {
LocalDate date = LocalDate.now();
System.out.println("Current date = " + date);
LocalDate date1 = date.with(TemporalAdjusters.firstDayOfMonth());
System.out.println("First day of month = " + date1);
LocalDate date2 = date.with(TemporalAdjusters.lastDayOfMonth());
System.out.println("Last day of month = " + date2);
LocalDate date3 = date.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
System.out.println("Next Monday = " + date3);
LocalDate date4 = date.with(TemporalAdjusters.lastDayOfYear());
System.out.println("Last day of year = " + date4);
}
}
The result of the code snippet are:
Current date = 2021-11-18
First day of month = 2021-11-01
Last day of month = 2021-11-30
Next Monday = 2021-11-22
Last day of year = 2021-12-31
The table below shows the complete static factory methods provided by the TemporalAdjusters
class.
Method Name | Method Description |
---|---|
dayOfWeekInMonth |
Returns a new date in the same month with the ordinal day-of-week. |
firstDayOfMonth |
Returns a new date set to the first day of the current month. |
firstDayOfNextMonth |
Returns a new date set to the first day of the next month. |
firstDayOfNextYear |
Returns a new date set to the first day of the next year. |
firstDayOfYear |
Returns a new date set to the first day of the current year. |
firstInMonth |
Returns a new date in the same month with the first matching day-of-week. |
lastDayOfMonth |
Returns a new date set to the last day of the current month. |
lastDayOfYear |
Returns a new date set to the last day of the current year. |
lastInMonth |
Returns a new date in the same month with the last matching day-of-week. |
next |
Returns the next day-of-week adjuster. |
nextOrSame |
Returns the next-or-same day-of-week adjuster. |
ofDateAdjuster |
Returns user-written adjuster. |
previous |
Returns the previous day-of-week adjuster. |
previousOrSame |
Returns the previous-or-same day-of-week adjuster. |
- How do I create a string of repeated characters? - September 1, 2023
- How do I convert datetime string with optional part to a date object? - August 28, 2023
- How do I split large excel file into multiple smaller files? - April 15, 2023