1. ホーム
  2. java

長いタイムスタンプからLocalDateTimeへ

2023-09-24 04:41:32

質問

長いタイムスタンプ1499070300(Mon, 03 Jul 2017 16:25:00 +0800に相当)がありますが、LocalDateTimeに変換すると、1970-01-18T16:24:30.300となります。

以下は私のコードです。

long test_timestamp = 1499070300;

LocalDateTime triggerTime =
                LocalDateTime.ofInstant(Instant.ofEpochMilli(test_timestamp), TimeZone
                        .getDefault().toZoneId());

どのように解決するのですか?

タイムスタンプをミリ秒単位で渡す必要があります。

long test_timestamp = 1499070300000L;
LocalDateTime triggerTime =
        LocalDateTime.ofInstant(Instant.ofEpochMilli(test_timestamp), 
                                TimeZone.getDefault().toZoneId());  

System.out.println(triggerTime);

結果

2017-07-03T10:25

あるいは ofEpochSecond を使うこともできます。

long test_timestamp = 1499070300L;
LocalDateTime triggerTime =
       LocalDateTime.ofInstant(Instant.ofEpochSecond(test_timestamp),
                               TimeZone.getDefault().toZoneId());   

System.out.println(triggerTime);

結果

2017-07-03T10:25