世界中どこでも一定なunix時間(UTCの1970/1/1からの経過時間)を噛ませて変換する。
Test.kt
/**
* UTC(オフセット付)の文字列から、日本時間に変換する
*/
val utcStr = "2022-06-01T06:00:30Z"
val utcWithOffset = OffsetDateTime.parse(utcStr)
val unixtime = utcWithOffset.toEpochSecond()
// オフセット(+09:00 とか)も出したい場合
val jstWithOffset = OffsetDateTime.ofInstant(
Instant.ofEpochSecond(unixtime),
ZoneId.of("Asia/Tokyo")
).toString()
println(jstWithOffset) // 2022-06-01T15:00+09:00
// オフセットはいらない場合
val jst = LocalDateTime.ofInstant(
Instant.ofEpochSecond(unixtime),
ZoneId.of("Asia/Tokyo")
).toString()
println(jst) // 2022-06-01T15:00:30
// タイムゾーン表記も出したい場合
val jstWithTimeZone = ZonedDateTime.ofInstant(
Instant.ofEpochSecond(unixtime),
ZoneId.of("Asia/Tokyo")
).toString()
println(jstWithTimeZone) // 2022-06-01T15:00:30+09:00[Asia/Tokyo]