Статический метод ofDateAdjuster

Статический метод ofDateAdjuster класса TemporalAdjusters создает пользовательский корректировщик дат на основе лямбда-выражения. В параметр мы передаем функцию, которая принимает объект LocalDate и возвращает новый объект LocalDate с примененными изменениями.

Импорт

kotlinimport java.time.LocalDate
import java.time.temporal.TemporalAdjusters

Синтаксис

kotlinfun ofDateAdjuster(adjuster: (LocalDate) -> LocalDate): TemporalAdjuster

Пример

Создадим корректировщик, который добавляет 10 дней к текущей дате:

kotlinval addTenDaysAdjuster = TemporalAdjusters.ofDateAdjuster { date -> date.plusDays(10) }
val currentDate = LocalDate.of(2025, 6, 15)
val adjustedDate = currentDate.with(addTenDaysAdjuster)

println("Original date: $currentDate")
println("Adjusted date: $adjustedDate")

Результат выполнения кода:

kotlinString "Original date: 2025-06-15"
String "Adjusted date: 2025-06-25"

Пример

Создадим корректировщик, который устанавливает последний день месяца:

kotlinval lastDayOfMonthAdjuster = TemporalAdjusters.ofDateAdjuster { date -> 
  date.withDayOfMonth(date.lengthOfMonth())
}

val testDate = LocalDate.of(2025, 2, 15)
val resultDate = testDate.with(lastDayOfMonthAdjuster)

println("Test date: $testDate")
println("Result date: $resultDate")

Результат выполнения кода:

kotlinString "Test date: 2025-02-15"
String "Result date: 2025-02-28"

Пример

Создадим корректировщик, который переходит к следующему понедельнику:

kotlinval nextMondayAdjuster = TemporalAdjusters.ofDateAdjuster { date ->
  var current = date
  val targetDay = java.time.DayOfWeek.MONDAY
  
  while (current.dayOfWeek != targetDay) {
    current = current.plusDays(1)
  }
  current
}

val fridayDate = LocalDate.of(2025, 7, 18)
val mondayDate = fridayDate.with(nextMondayAdjuster)

println("Friday date: $fridayDate")
println("Next Monday: $mondayDate")

Результат выполнения кода:

kotlinString "Friday date: 2025-07-18"
String "Next Monday: 2025-07-21"

Смотрите также

  • функцию firstDayOfMonth класса TemporalAdjusters,
    которая возвращает первый день месяца
  • функцию lastDayOfMonth класса TemporalAdjusters,
    которая возвращает последний день месяца
  • функцию plusDays класса LocalDate,
    которая добавляет дни к дате