java – 无法使用“HH:mm E d MMM YYYY”模式解析DateTimeForma
发布时间:2020-12-15 08:26:04 所属栏目:Java 来源:网络整理
导读:我正在从外部数据源检索日期/时间,这将以下列格式“5月5日星期六4:30”返回,没有年份. 我一直试图将此解析为LocalDateTime失败.返回的数据不会返回一年,因为我们假设我们一直在当年运营. //date to parseString time = "14:30 Sat 05 May";//specify date fo
我正在从外部数据源检索日期/时间,这将以下列格式“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. 作为一种解决方法,您可以在输入中连接当前年份. 一些额外的说明: >您使用的模式和文本格式的输入日期不完全匹配. 所以你可以尝试这样的事情: //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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |