如何将含全称月份的日期字符串转为LocalDate?解析报错求助
问题解决:DateTimeParseException解析含月份全称的日期字符串
错误原因
你遇到的DateTimeParseException核心原因是格式模式与日期字符串不匹配:
- 目标日期字符串
"10 March 2024"中的月份是全称(March) - 你使用的格式模式
"dd MMM yyyy"里的MMM仅对应月份缩写(如Mar),两者无法匹配,导致索引6处解析失败。
修正步骤
- 调整格式模式:将
"dd MMM yyyy"改为"dd MMMM yyyy",MMMM是Java时间API中对应月份全称的格式符。 - 移除无效代码:
dateFormat方法里的break语句没有对应的循环结构,会引发编译错误,需直接删除。
修正后的完整代码
调用逻辑
public void iConvertDate() { String datevalue = String.valueOf(UIPgAct.dateFormat("10 March 2024", "dd MMMM yyyy")); }
日期转换方法
import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.Locale; public LocalDate dateFormat(String dateToFormat, String fromFormatPattern) { LocalDate dateLocal = null; if (dateToFormat != null) { try { DateTimeFormatter dtf = DateTimeFormatter.ofPattern(fromFormatPattern, Locale.US); dateLocal = LocalDate.parse(dateToFormat, dtf); } catch (Exception e) { System.out.println(e.getMessage()); } } return dateLocal; }
额外说明
- 若后续需要处理带分隔符的日期(如
10-March-2024),只需将格式模式改为"dd-MMMM-yyyy"即可。 - 保持
Locale.US的设置,确保与日期字符串的语言环境匹配,避免本地化差异引发的解析问题。
内容的提问来源于stack exchange,提问作者VinnyTech
相关产品推荐
相关产品推荐

