java – 无法使用“HH:mm E d MMM YYYY”模式解析DateTimeFormatter
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 无法使用“HH:mm E d MMM YYYY”模式解析DateTimeFormatter,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1503字,纯文字阅读大概需要3分钟。
内容图文
![java – 无法使用“HH:mm E d MMM YYYY”模式解析DateTimeFormatter](/upload/InfoBanner/zyjiaocheng/741/07303358fff74f58a3d87383bfa86705.jpg)
我正在从外部数据源检索日期/时间,这将以下列格式“5月5日星期六4:30”返回,没有年份.
我一直试图将此解析为LocalDateTime失败.返回的数据不会返回一年,因为我们假设我们一直在当年运营.
//date to parse
String time = "14:30 Sat 05 May";
//specify date format matching above string
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm E d MMM YYYY") ;
//we do not have a year returned but i can make the assumption we use the current year
LocalDateTime formatDateTime = LocalDateTime.parse(time, formatter).withYear(2018);
上面的代码抛出以下异常
线程“main”中的异常java.time.format.DateTimeParseException:Text ’14:30 Sat 05 May’无法在索引16处解析
任何帮助赞赏.
解决方法:
LocalDateTime.parse()需要一个表示有效日期的String,即年份部分.
以这种方式调用此方法后,您无法设置年份:
LocalDateTime.parse(time, formatter).withYear(2018);
必须先设置年份,否则parse()会抛出DateTimeParseException.
作为一种解决方法,您可以在输入中连接当前年份.
一些额外的说明:
>您使用的模式和文本格式的输入日期不完全匹配.
>您没有为解析操作指定区域设置.
这意味着它将根据运行JVM的本地工作.
要确保它在任何情况下都有效,您应该指定Locale.
所以你可以尝试这样的事情:
//date to parse
String time = "14:30 Sat 05 May";
time += " " + LocalDate.now().getYear();
//specify date format matching above string
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm EEE dd MMM yyyy", Locale.US) ;
//we do not have a year returned but i can make the assumption we use the current year
LocalDateTime formatDateTime = LocalDateTime.parse(time, formatter);
内容总结
以上是互联网集市为您收集整理的java – 无法使用“HH:mm E d MMM YYYY”模式解析DateTimeFormatter全部内容,希望文章能够帮你解决java – 无法使用“HH:mm E d MMM YYYY”模式解析DateTimeFormatter所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。