kotlin 時刻を0時0分にリセットして表示する

kotlin 時刻を0時0分にリセットして表示する

kotlinで、時刻を0時0分にリセットして表示する手順を記述してます。「truncatedTo」で可能です。時分だけでなく分以下や秒以下もリセットすることができます。

環境

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

手順

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

import java.time.temporal.ChronoUnit

truncatedTo(ChronoUnit.DAYS)

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

import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
import java.time.temporal.ChronoUnit

fun main(){    

    val d = LocalDateTime.now()

    println(d) // 2022-04-21T12:56:46.409619200

    var result =  d.truncatedTo(ChronoUnit.DAYS).format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm"))

    println(result) // 2022/04/21 00:00

}

時刻が「00:00」にリセットされていることが確認できます。

分以下をリセット

分以下をリセットするには「ChronoUnit.HOURS」を使用します。

import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
import java.time.temporal.ChronoUnit

fun main(){    

    val d = LocalDateTime.now()

    println(d) // 2022-04-21T13:04:08.622284800

    var result =  d.truncatedTo(ChronoUnit.HOURS).format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"))

    println(result) // 2022/04/21 13:00:00

}

秒以下をリセット

秒以下をリセットするには「ChronoUnit.MINUTES」を使用します。

import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
import java.time.temporal.ChronoUnit

fun main(){    

    val d = LocalDateTime.now()

    println(d) // 2022-04-21T13:05:49.321417400

    var result =  d.truncatedTo(ChronoUnit.MINUTES).format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"))

    println(result) // 2022/04/21 13:05:00

}