ある質問に対する回答で、System.currentTimeMillis()
で取得したエポックからのミリ秒を元に計算でエポックからの日数、時分秒ナノ秒まで求めて、その値からLocalDateとLocalTimeを生成し、LocalDateTimeを生成する、という実験プログラムを組みました。
しかしその後、「確かミリ秒からInstantに変換してそこからLocalDateTimeとかに変換できたよな…」と思い、以下のプログラムを組みました。
java
1import java.time.Instant; 2import java.time.LocalDateTime; 3import java.util.Locale; 4 5public class Test3 { 6 public static void main(String[] args) { 7 8 long l = System.currentTimeMillis(); 9 Instant instant = Instant.ofEpochMilli(l); 10 LocalDateTime ldt = LocalDateTime.from(instant); 11 System.out.println(ldt); 12 } 13} 14
しかし、これを実行すると
Exception in thread "main" java.time.DateTimeException: Unable to obtain LocalDateTime from TemporalAccessor: 2016-02-08T18:08:53.768Z of type java.time.Instant at java.time.LocalDateTime.from(LocalDateTime.java:461) at free.Test3.main(Test3.java:14) Caused by: java.time.DateTimeException: Unable to obtain LocalDate from TemporalAccessor: 2016-02-08T18:08:53.768Z of type java.time.Instant at java.time.LocalDate.from(LocalDate.java:368) at java.time.LocalDateTime.from(LocalDateTime.java:456) ... 1 more
と、このような例外が発生します。
InstantのメソッドにはZonedDateTime,OffsetDateTimeを生成するメソッドがあるのに、LocalDateTimeを生成する手段が無いのは府に落ちません。
このInstant->LocalDateTimeの変換ができないのなら、一体これらのメソッドはどのようにして使うのか、また、このような変換をAPIで簡単にする手法はないのか、と気になり質問しました。
何卒、よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。