TemporalAdjusters

Date-Time APIのTemporalAdjustersを使うと、日付オブジェクトをお手軽に変換できる。

LocalDateのインスタンスメソッドwithTemporalAdjustersを渡す。

date.with(TemporalAdjusters.xxx()) // xxxで指定したメソッドに応じた日付が返る

xxxはさまざまなメソッドが用意されており、APIドキュメントから確認できる。
TemporalAdjusters (Java Platform SE 8)

TemporalAdjustersの使用例

月末の日付を取得する

Kotlinで月末の日付を取得するには、TemporalAdjusters.lastDayOfMonth()を渡す。

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

fun main() {
    val date = LocalDate.now()
    val lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth())
    println(lastDayOfMonth)
}

月初の日付を取得する

TemporalAdjusters.firstDayOfMonth()を渡すと月初の日付を取得できる。

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

fun main() {
    val date = LocalDate.now()
    val firstDayOfMonth = date.with(TemporalAdjusters.firstDayOfMonth())
    println(firstDayOfMonth)
}

翌月の最初の日を見つける

TemporalAdjusters.firstDayOfNextMonth()を渡すと翌月の最初の日を取得できる。

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

fun main() {
    val date = LocalDate.now()
    val firstDayOfNextMonth = date.with(TemporalAdjusters.firstDayOfNextMonth())
    println(firstDayOfNextMonth)
}

その年の最後の日を見つける

TemporalAdjusters.lastDayOfYear()を渡すとその年の最後の日を取得できる。

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

fun main() {
    val date = LocalDate.now()
    val lastDayOfYear = date.with(TemporalAdjusters.lastDayOfYear())
    println(lastDayOfYear)
}

翌年の最初の日を見つける

TemporalAdjusters.firstDayOfNextYear()を渡すと翌年の最初の日を取得できる。

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

fun main() {
    val date = LocalDate.now()
    val firstDayOfNextYear = date.with(TemporalAdjusters.firstDayOfNextYear())
    println(firstDayOfNextYear)
}

月内の最初の月曜日を見つける

TemporalAdjusters.firstInMonth(DayOfWeek)を渡すと翌年の最初の日を取得できる。

import java.time.DayOfWeek
import java.time.LocalDate
import java.time.temporal.TemporalAdjusters

fun main() {
    val date = LocalDate.now()
    val firstMonday = date.with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY))
    println(firstMonday)
}

次の月曜日を見つける

TemporalAdjusters.next(DayOfWeek)を渡すと次の月曜日を取得できる。

import java.time.DayOfWeek
import java.time.LocalDate
import java.time.temporal.TemporalAdjusters

fun main() {
    val date = LocalDate.now()
    val nextMonday = date.with(TemporalAdjusters.next(DayOfWeek.MONDAY))
    println(nextMonday)
}