栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

UnsupportedTemporalTypeException:不支持的字段:InstantSeconds

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

UnsupportedTemporalTypeException:不支持的字段:InstantSeconds

问题在于您的格式不能完全代表即时消息,因为您的格式根本没有几分钟的代表。格式化程序可以正确地使用Instant并以您的格式输出结果,因为Instant具有您格式所需的所有数据,但是您的格式不具备Instant所需的所有数据。

尝试将模式更改为

yyyyMMdd kk:HH:mm:ss.SSS
,您将看到代码现在可以工作了。请注意添加
mm

如果绝对需要无缝模式,则应进行自己的TemporalQuery来从TemporalAccessor中提取所需的信息。在这种情况下,我只需将分钟设置为

0

public class MyQuery implements TemporalQuery<Instant> {    @Override    public Instant queryFrom(TemporalAccessor temporal) {        LocalDate ld = LocalDate.from(temporal);        LocalTime lt = LocalTime.of(temporal.get(ChronoField.HOUR_OF_DAY), 0, temporal.get(ChronoField.SECOND_OF_MINUTE), temporal.get(ChronoField.NANO_OF_SECOND));        return ZonedDateTime.of(ld, lt, ZoneId.systemDefault()).toInstant();    }}

然后,我们可以像下面这样使用TemporalQuery:

public class Test {    public static void main(String[] args) {        DateTimeFormatter formatter = DateTimeFormatter .ofPattern("yyyyMMdd kk:HH:mm:ss.SSS") .withLocale(Locale.getDefault()) .withZone(ZoneId.systemDefault());        Instant now = Instant.now();        String formatted = formatter.format(now);        System.out.println(formatted);        Instant ld = formatter.parse(formatted, new MyQuery());    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/391274.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号