如何将java.time.temporal.Temporal实例转换为java.util.Date实例?
java.time.temporal.Temporal someTemporal = Instant.now();
java.util.Date some Temporal = x(someTemporal);我看过Oracle's legacy time trail documentation,但找不到合适的解决方案。
发布于 2016-10-24 23:44:02
我强烈建议省略对(太)通用接口java.time.temporal.Temporal的任何引用,只需这样做:
java.util.Date some = java.util.Date.from(Instant.now());使用接口Temporal几乎与使用java.lang.Object类似。你应该尽可能的具体(特别是在日期和时间的上下文中)。甚至JSR-310-API officially outputs a warning
此接口是框架级别的接口,不应在应用程序代码中广泛使用。相反,应用程序应该创建和传递具体类型的实例,比如LocalDate。原因有很多,其中一部分原因是此接口的实现可能在ISO以外的日历系统中。有关这些问题的更全面讨论,请参阅ChronoLocalDate。
发布于 2016-10-24 23:19:08
在底部,它有:
虽然java.time.format.DateTimeFormatter提供了设置日期和时间值格式的强大机制,但您也可以将java.time基于时间的类直接用于java.util.Formatter和String.format,使用与java.util date和time类相同的基于模式的格式设置。
看起来您可能想要在documentation here中使用DateTimeFormatter类,并使用类似于下面的示例:
LocalDate date = LocalDate.now();
String text = date.format(formatter);
LocalDate parsedDate = LocalDate.parse(text, formatter);发布于 2017-08-11 04:29:56
我认为你问错了这个问题。相反,我相信你想知道如何使用泛型接口将任何java.time具体类(例如Instant、LocalDate )转换为Date。我相信TemporalAccessor就是那个接口。
@Test
public void convertTemportalAccessorTypeToDate() throws Exception {
Instant instant = Instant.now();
Date expected = Date.from( instant );
TemporalAccessor now = instant;
long nanos = now.getLong( ChronoField.NANO_OF_SECOND );
long epochSeconds = now.getLong( ChronoField.INSTANT_SECONDS );
Date date1 = Date.from( Instant.ofEpochSecond( epochSeconds, nanos ) );
assertThat( date1, is( expected ));
}也就是说,具体类型实际上必须支持ChronoField,如果不支持,似乎会抛出UnsupportedTemporalTypeException,所以可能会包装在try catch中。
https://stackoverflow.com/questions/40221774
复制相似问题