2016-02-03 8 views
80

私は外部APIを返します。返される日付はlongです。これはEpochからのミリ秒で表されます。古いスタイルのJava APIでミリ秒で長いEpoch時間からJava 8 LocalDateを作成するにはどうすればよいですか?

、私は単純にJavaの8のLocalDate/LocalDateTimeクラスで同等である何

Date myDate = new Date(startDateLong)

でそれからDateを構築するのでしょうか?

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

+4

さてあなたは、あなたが気にどのような時間帯ワークアウトで開始する必要があることができ。 「エポックからのミリ秒」の値は、異なる時間帯の異なる日付を参照することができる瞬間を提供します。 'java.util.Date'は、' LocalDate'のやり方で決して日付ではなかったことを覚えておいてください。 –

+2

この質問を確認してください:http://stackoverflow.com/questions/21242110/convert-java-util-date-to-java-time-localdate、 'java.util.Date'から' LocalDate'への変換をカバーします – hotzst

+1

注意:このQ&Aは 'File.lastModified()'(エポックミリ秒)を 'LocalDate(Time)'に変換しようとする人にとっても有益です。 – kevinarpe

答えて

150

は、あなたが使用することができます

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

が、システムのデフォルトのタイムゾーンでも変更される可能性があるので、同じマシン上であっても、同じlongの値では、後続の実行で異なる結果が生じる可能性があります。

LocalDateは、java.util.Dateとは異なり、実際には日付と時刻ではなく日付を表します。

そうでない場合、あなたはLocalDateTimeを使用することがあります。

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

+1です。ところで、非システムゾーンであっても(tzupdater-toolまたはjdk-changeによって)変更することができ、前後の結果が異なる場合があります。 –

+1

@Meno Hochschild:ハードコードされたタイムゾーンに集中するのではなく、ユーザーが指定したタイムゾーンと比較し、設定ファイルや環境変数から読み込みます。ハードコードされたタイムゾーンは実際にはシステムのデフォルトによく似ています。プログラマーは彼らが決して変化していないと思うように誘惑されている... – Holger

15

あなたはInstant.ofEpochMilli(long)で始めることができます:あなたはエポックからのミリ秒を持っており、現在のローカルタイムゾーンを使用してローカルの日付に変換したい場合は

LocalDate date = 
    Instant.ofEpochMilli(startDateLong) 
    .atZone(ZoneId.systemDefault()) 
    .toLocalDate(); 
+1

+1は時間帯を明示しています。これを省略すると、JVMの現在のデフォルトのタイムゾーンが暗黙的に日付の決定に適用されます。任意の瞬間について、日付は、東日本で早く新しい日が起きるように、世界各地でタイムゾーンによって異なります。私の詳細な説明は –

0

タイムゾーンとか、new Date(startDateLong)に非常に単純な代替はLocalDate.ofEpochDay(startDateLong/86400000L)

+3

私はあなたが少なくとも86400000Lの略語を説明すべきだと思います。 – BAER

+1

私はそれが1日のミリ秒の数であることが分かりやすいと思った。 –

+2

それはあるものの、それだけが意味をなさないと分かりましたが、再計算なしで、1日に何ミリ秒かかるか本当にわかりません。自分のことを話すだけで、私はこの番号をよく知らないので、それが何を表しているのかを自動的に知ることができます。 – BAER

関連する問題