Dán*_*Kis 8 java date temporal java.util.date datetime-conversion
如何将 TemporalAccessor 转换为 java.util.Date?
TemporalAccessor accessor = functionReturnsTemporalAccessor()
Date date = Date.from(accessor)
Run Code Online (Sandbox Code Playgroud)
Date.from()不接受TemporalAccessor,有什么方法可以转换为java.util.Date吗?
\n\n\n
DateTimeFormatter.ISO_OFFSET_DATE_TIME.parse(...)返回\nTemporalAccessor
真的。不要\xe2\x80\x99使用该方法。请改用 one-arg OffsetDateTime.parse(CharSequence)。例子:
String isoOffsetDateTimeString = "2020-11-13T21:07:38.146120+01:00";\n OffsetDateTime dateTime = OffsetDateTime.parse(isoOffsetDateTimeString);\n Instant asInstant = dateTime.toInstant();\n Date oldfashionedDate = Date.from(asInstant);\n System.out.println(oldfashionedDate);\nRun Code Online (Sandbox Code Playgroud)\n我的时区的输出:
\n\n\n欧洲中部时间 2020 年 11 月 13 日星期五 21:07:38
\n
Date如果可以避免的话,也不要使用\xe2\x80\x99 。该类设计不佳且早已过时。我假设您需要一个旧版 API,而您现在无法升级到 java.time。
one-argOffsetDateTime.parse()完全接受 指定的格式DateTimeFormatter.ISO_OFFSET_DATE_TIME,因此是您尝试的一个很好的替代品。
虽然可以TemporalAccessor将返回的 from转换DateTimeFormatter.ISO_OFFSET_DATE_TIME.parse()为 a Date,但不切实际,通常不能将 a 转换TemporalAccessor为 a Date。每个TemporalAccessor都有一些它支持的字段和一些它不支持的字段\xe2\x80\x99t。由于 a Date(尽管名称如此)是一个时间点,因此TemporalAccessor需要定义一个时间点,但并非所有TemporalAccessor对象都这样做。
如果您已经习惯了旧的、设计不佳且现已过时的 Java 日期和时间类(如SimpleDateFormat和 )Date,那么您已经习惯了在格式化程序上调用parse和方法。对于 java.time,传统的方法是相反的:我们现在通常调用日期时间类的format静态方法,例如,可选地给出一个as 参数(在这种情况下,\xe2\x80\x99t 是不必要的)。类似地,我们调用日期时间对象上的方法,再次传递 a作为参数。parseOffsetDateTimeDateTimeFormatterformatDateTimeFormatter
我想这取决于TemporalAccessor你的方法返回的类型。但是ISO_OFFSET_DATE_TIME您在评论中提到的输出应该可以处理:
TemporalAccessor accessor = functionReturnsTemporalAccessor();
Date date = new Date(Instant.from(accessor).toEpochMilli());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9906 次 |
| 最近记录: |