Lazuli

らずり

Android(Kotlin)でTimeZoneを考慮した日付の扱い方

ZonedDateTime を使えばよい
タイムゾーン情報は ZoneId を使う

// JSTで現在時間を導く
ZonedDateTime.now(ZoneId.of("Asia/Tokyo"))

// 文字列からZonedDateTimeへ変換
date = "2021-01-01T00:00:00+09:00[Asia/Tokyo]"
ZonedDateTime.parse(date)

// 任意の時間に変える
ZonedDateTime.now().withHour(22).withMinute(0).withSecond(0)

// 任意の日付フォーマットのStringに変える
ZonedDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME)

日付フォーマットは DateTimeFormatter のところに色々書いてある

ある日時とある日時の差分を求めるには ChronoUnit を使う

// 経過秒数を出すなら
ChronoUnit.MINUTES.between(from, to)

// 経過年数を出すなら
ChronoUnit.YEARS.between(from, to)