B-Teck!

お仕事からゲームまで幅広く

【Kotlin】文字列の日時が指定の期間内に含まれているかを判定する

KotlinのDateにはRange演算子(Ranges - Kotlin Programming Language)が実装されているので、
簡単に大小や範囲を判定することができる。

下記は文字列の日時をSimpleDateFormatでDateに変換して、
0時から3時の間に含まれるかを判定しているサンプル。

 import java.text.SimpleDateFormat
 fun main() {
     println(isDateInRange("2018-11-26T01:50:00")) // true
     println(isDateInRange("2018-11-26T08:50:00")) // false
 }

fun isDateInRange(input : String) :Boolean {
    return SimpleDateFormat("yyyy-MM-dd'T'HH:mm").let{
        // 年月日だけ取り出す
         val date = SimpleDateFormat("yyyy-MM-dd").let{
             val parsed = it.parse(input)
             it.format(parsed)
         }
         // 指定範囲を作る(例として0時から3時)
         val range = it.parse("${date}T00:00:00")..it.parse("${date}T03:00:00")
         // 含まれているかを確認する
         range.contains(it.parse(input))
    }
}