Posted at

ScalaでUnix timestampからLocalDatetimeを取得する

特にScalaに限った話ではなく、Javaでも同様です。自分用のメモです。

Unixのtimestampが与えられたとき、それをjava.time.LocalDateTimeに変換するには、


main.scala

import java.time._

def fromUnixMilliSecond(ts: Long): LocalDateTime =
LocalDateTime.ofInstant(Instant.ofEpochMilli(ts), ZoneOffset.UTC)


という感じに書けます。

ミリ秒ではなく、秒の場合は


main.scala

import java.time._

def fromUnixSecond(ts: Long): LocalDateTime =
LocalDateTime.ofInstant(Instant.ofEpochSecond(ts), ZoneOffset.UTC)


と書けます。

Instantは元のtimestampの単位が、秒かミリ秒かによって呼ぶメソッドが異なるので、分かりやすい感じがします。


参考

https://qiita.com/liguofeng29/items/c643c6f81afc62aac77d

https://docs.oracle.com/javase/jp/8/docs/api/java/time/LocalDateTime.html#ofInstant-java.time.Instant-java.time.ZoneId-

https://docs.oracle.com/javase/jp/8/docs/api/java/time/Instant.html#ofEpochMilli-long-

https://docs.oracle.com/javase/jp/8/docs/api/java/time/Instant.html#ofEpochSecond-long-