The TemporalAdjusters
class, part of java.time.temporal
, provides common date adjustment operations as static methods that return TemporalAdjuster
instances. These are used with date-time objects to manipulate or align them to significant calendar dates—like the first day of the month, next Monday, etc.
Commonly Used Methods

Simple Program
import java.time.LocalDate; import java.time.temporal.TemporalAdjusters; import java.time.DayOfWeek; public class TemporalAdjusterExample { public static void main(String[] args) { LocalDate today = LocalDate.now(); LocalDate firstDay = today.with(TemporalAdjusters.firstDayOfMonth()); LocalDate nextMonday = today.with(TemporalAdjusters.next(DayOfWeek.MONDAY)); LocalDate lastDay = today.with(TemporalAdjusters.lastDayOfYear()); System.out.println("Today: " + today); System.out.println("First Day of Month: " + firstDay); System.out.println("Next Monday: " + nextMonday); System.out.println("Last Day of Year: " + lastDay); } }
Problem Statement
LotusJavaPrince and Mahesh are building a leave management system for employees. The system must:
- Automatically find the next Friday for optional leave.
- Identify the last day of the month for payroll processing.
- Find the first Monday of the next month for scheduling training.
- Ensure all adjustments are dynamic based on today’s date.
import java.time.LocalDate; import java.time.DayOfWeek; import java.time.temporal.TemporalAdjusters; public class LeaveSystem { public static void main(String[] args) { System.out.println("Leave Management System by LotusJavaPrince & Mahesh"); LocalDate today = LocalDate.now(); LocalDate nextFriday = today.with(TemporalAdjusters.next(DayOfWeek.FRIDAY)); LocalDate payrollDate = today.with(TemporalAdjusters.lastDayOfMonth()); LocalDate firstMondayNextMonth = today .with(TemporalAdjusters.firstDayOfNextMonth()) .with(TemporalAdjusters.nextOrSame(DayOfWeek.MONDAY)); System.out.println("Today's Date: " + today); System.out.println("Next Optional Leave (Friday): " + nextFriday); System.out.println("Payroll Processing Date: " + payrollDate); System.out.println("First Training Monday of Next Month: " + firstMondayNextMonth); } } /* Leave Management System by LotusJavaPrince & Mahesh Today's Date: 2025-05-22 Next Optional Leave (Friday): 2025-05-23 Payroll Processing Date: 2025-05-31 First Training Monday of Next Month: 2025-06-02 */
The TemporalAdjusters
class is a powerful utility for manipulating and navigating calendar dates based on logical rules. It is ideal for:
- Business rule-based date computation.
- Employee scheduling, payroll systems, and event planning.
- Reducing boilerplate logic for date calculations.