Java 8有一个全新的日期和时间API。这个API中最有用的类之一是LocalDateTime,用于保存一个与时区无关的date-with-time值。

可能有数百万行代码使用遗留类java.util.Date来实现这个目的。因此,当新旧代码进行接口时,就需要在两者之间进行转换。由于似乎没有直接的方法来实现这一点,怎么能做到呢?


当前回答

所有东西都在这里:http://blog.progs.be/542/date-to-java-time

“往返”的答案并不确切:当你这样做的时候

LocalDateTime ldt = LocalDateTime.ofInstant(instant, ZoneOffset.UTC);

如果您的系统时区不是UTC/GMT,则更改时间!

其他回答

如果你在android上使用threetenbp,你可以使用DateTimeUtils代替。

例:

Date date = DateTimeUtils.toDate(localDateTime.atZone(ZoneId.systemDefault()).toInstant());

你不能使用Date.from,因为它只支持api 26+

更方便的方法,如果你确定你需要一个默认时区:

Date d = java.sql.Timestamp.valueOf( myLocalDateTime );

当从新的API LocalDateTime转换为java.util.date时,下面的代码似乎可以工作:

Date.from(ZonedDateTime.of({time as LocalDateTime}, ZoneId.systemDefault()).toInstant());

反向转换可以(希望)以类似的方式实现……

希望能有所帮助……

所有东西都在这里:http://blog.progs.be/542/date-to-java-time

“往返”的答案并不确切:当你这样做的时候

LocalDateTime ldt = LocalDateTime.ofInstant(instant, ZoneOffset.UTC);

如果您的系统时区不是UTC/GMT,则更改时间!

LocalDateTime -> Date的最快方法是:

Date.from(ldt.toInstant(ZoneOffset.UTC))