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

DateTimeParseException:无法解析文本'2019-06-07 12:18:16'

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

DateTimeParseException:无法解析文本'2019-06-07 12:18:16'

在一天中的小时内使用HH代替hh

您要问的问题是

hh
(两次)在格式模式字符串中使用小写字母。您需要
HH
从00到23的小时中的大写字母,
hh
是从01到12的AM或PM中的小时数。因此出了问题,java.time不知道
12
您的字符串中是12
AM还是12 PM并拒绝为您猜测。

如果您仔细阅读异常消息,您还会注意到该异常消息已

HourOfAmPm=0
被解析。没有说
HourOfDay

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");    String timestampString = LocalDateTime.now().format(formatter);    System.out.println("timestampString: " + timestampString);    Instant instant = LocalDateTime.parse(timestampString, formatter) .toInstant(ZoneOffset.UTC);    System.out.println("instant: " + instant);

刚运行此代码段时,得到以下输出:

timestampString: 2019-06-08 19:22:51instant: 2019-06-08T19:22:51Z

这是 错的
!我在世界标准时间17:22而非19:22左右运行了代码段。由于丹麦仍在使用夏令时(该死),因此此处的当地时间为19:22,用于显示结果,并转换为UTC的相同挂钟时间,而不是同一时刻。您应该
始终 将所需的时区传递给该

now
方法,以避免此类错误。由于您想要UTC:

    String timestampString = LocalDateTime.now(ZoneOffset.UTC).format(formatter);
timestampString: 2019-06-08 17:27:57instant: 2019-06-08T17:27:57Z

更好的是,不要

LocalDateTime
用于保留您想暂时使用的东西。使用
Instant
OffsetDateTime
ZonedDateTime
代替。

在此问题及其答案中

hh
,有更多有关使用
HH
kk
用于格式化和解析小时值的信息:SimpleDateFormat上的java
HH:mm和hh:mm之间的区别。问题是问的出了名的麻烦
SimpleDateFormat
,但答案也同样有效
DateTimeFormatter



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

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

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