気軽に楽しくプログラムと遊ぶ

自分が興味があってためになるかもって思う情報を提供しています。

Java8 LocalDateTimeと旧Dateの相互変換

Java8のLocalDateTimeからDateへの変換は思いのほか、骨が折れる。。
DBfluteのJava8対応で日時項目が、LocalDateTime型としてentity生成されているので、調べたがそもそも使わないというのもありかもしれない。。

LocalDateTimeからDateへの変換 その1

LocalDateTime ldt = LocalDateTime.now();
Date d = Date.from(ldt.toInstant(ZoneId.systemDefault().getRules().getOffset(ldt)));

LocalDateTimeからDateへの変換 その2

ZonedDateTimeを間に挟むやり方。見やすくはなる。

LocalDateTime ldt = LocalDateTime.now();
ZonedDateTime zdt = ldt.atZone(ZoneId.systemDefault());
Date rd = Date.from(zdt.toInstant());

DateからLocalDateTimeへの変換

DateからLocalDateTimeへの変換は次のように書けます。

Date d;
LocalDateTime ldt = LocalDateTime.ofInstant(d.toInstant(), ZoneId.systemDefault());