kotlin 日時を指定した値に変更する

kotlin 日時を指定した値に変更する

kotlinで、日時を指定した値に変更する手順を記述してます。「withYear」などを使用します。存在しない日付を選択するとエラーが発生します。

環境

  • OS windows11 home
  • java 19.0.1
  • kotlin 1.7.20-release-201

手順

日時を指定した値に変更するには、以下のメソッドで可能です。

メソッド意味
dt.withYear(値)指定した値に年を変更
dt.withMonth()指定した値に月を変更
dt.withDayOfMonth()指定した値に日を変更
dt.withHour()指定した値に時間を変更
dt.withMinute()指定した値に分を変更
dt.withSecond()指定した値に秒を変更

実際に、変更してみます。見やすいようにフォーマットを指定して出力してます。

import java.time.LocalDateTime
import java.time.format.DateTimeFormatter

fun main(){    

    val d = LocalDateTime.now()

    println(d) // 2022-04-21T12:05:05.750125700

    var result =  d.withYear(3000).format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"))

    println(result) // 3000/04/21 12:21:54

    result =  d.withMonth(12).format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"))

    println(result) // 2022/12/21 12:21:54

    result =  d.withDayOfMonth(15).format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"))

    println(result) // 2022/04/15 12:21:54
    
}

それぞれ現在日時から指定した値に変更されていることが確認できます。

存在しない日付を指定するとエラーとなります。

import java.time.LocalDateTime
import java.time.format.DateTimeFormatter

fun main(){    

    val d = LocalDateTime.now()

    println(d)

    var result =  d.withMonth(13).format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"))

    println(result) 

// Exception in thread "main" java.time.DateTimeException: 
// Invalid value for MonthOfYear (valid values 1 - 12): 13

}