ミリ秒単位の長いエポック時間から Java 8 LocalDate を作成するにはどうすればよいでしょうか? 質問する

ミリ秒単位の長いエポック時間から Java 8 LocalDate を作成するにはどうすればよいでしょうか? 質問する

longエポックの開始からのミリ秒として表される日付を s として返す外部 API があります。

旧式のJava APIでは、単純に次Dateのようにして構築します。

Date myDate = new Date(startDateLong)

LocalDateJava 8 の/LocalDateTimeクラスで同等のものは何ですか?

で表される時点を現在のローカル タイムゾーンのlongに変換することに興味があります。LocalDate

ベストアンサー1

エポックからのミリ秒数があり、それを現在のローカルタイムゾーンを使用してローカル日付に変換したい場合は、次のようにします。Instant.ofEpochMilli(long epochMilli)

LocalDate date =
    Instant.ofEpochMilli(longValue).atZone(ZoneId.systemDefault()).toLocalDate();

longただし、システムのデフォルトのタイムゾーンも変更される可能性があるため、同じマシンであっても、同じ値で後続の実行時に異なる結果が生成される可能性があることに注意してください。

LocalDateさらに、 とは異なりjava.util.Date、 は日付と時刻ではなく、日付そのものを表すことに留意してください。

それ以外の場合は、 を使用できますLocalDateTime:

LocalDateTime date =
    LocalDateTime.ofInstant(Instant.ofEpochMilli(longValue), ZoneId.systemDefault());

おすすめ記事