Categories
未分类

Java 中 Date 和 LocalDateTime 互相转换

LocalDateTime 转换为 Date

看示例:

LocalDateTime ldt1 = LocalDateTime.parse("2021-04-05T06:07:08");
Date date1 = Date.from(ldt1.atZone(ZoneId.systemDefault()).toInstant());
System.out.printf("%s: %s\n", "ldt1", ldt1);
System.out.printf("%s: %s\n", "date1 from ltd1", date1);

输出结果:

ldt1: 2021-04-05T06:07:08
date1 from ltd1: Mon Apr 05 06:07:08 CST 2021

简单分析下:

先调用 LocalDateTime 的 atZone 方法(参数为系统默认时区),获取带时区信息的 ZonedDateTime 时间对象,然后转换为 Instant 瞬时对象。最后通过 Date 的 from 方法创建 Date 对象。

Date 转换为 LocalDateTime

看示例:

Date date2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2021-02-05 10:15:01");
LocalDateTime ldt2 = LocalDateTime.ofInstant(date2.toInstant(), ZoneId.systemDefault());
System.out.printf("%s: %s\n", "date2", date2);
System.out.printf("%s: %s\n", "ldt2 from date2", ldt2);

输出结果:

date2: Fri Feb 05 10:15:01 CST 2021
ldt2 from date2: 2021-02-05T10:15:01

简单分析下:

先转换 Date Instant 瞬时对象,再调用 LocalDateTime 的 ofInstant 方法(第二个参数为系统默认时区)即可。

其它

完整源码,请参阅:LocalDatetimeAndDate.java

(全文完)

扫码阅读和分享

Leave a Reply

Your email address will not be published. Required fields are marked *