long
エポックの開始からのミリ秒として表される日付を s として返す外部 API があります。
旧式のJava APIでは、単純に次Date
のようにして構築します。
Date myDate = new Date(startDateLong)
LocalDate
Java 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());