長いタイムスタンプ1499070300(2017年7月3日月曜日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
Instant.ofEpochMilli()
またはInstant.ofEpochSecond()
メソッドで試してください-
long test_timestamp = 1499070300L;
LocalDateTime date =
LocalDateTime.ofInstant(Instant.ofEpochMilli(test_timestamp ), TimeZone
.getDefault().toZoneId());
以下で試してください。
long test_timestamp = 1499070300000L;
LocalDateTime triggerTime =
LocalDateTime.ofInstant(Instant.ofEpochMilli(test_timestamp), TimeZone
.getDefault().toZoneId());
デフォルトでは、1499070300000
は、末尾にlが含まれていない場合はintです。また、ミリ秒単位で時間を渡します。
あなたの問題は、タイムスタンプがミリ秒単位ではなく、エポック日付からの秒単位で表されることです。タイムスタンプを1000倍するか、Instant.ofEpochSecond()
を使用します。