Java:DateTimeFormatter无法解析德语日期字符串问题
解决德语Locale下日期解析失败的问题
问题核心在于日期字符串格式与指定Locale不匹配:你的日期字符串中月份是英文缩写Feb,但代码里用了Locale.GERMAN,解析器会期望德语格式的月份标识,直接导致匹配失败。
分两种情况处理:
1. 日期字符串实际是英文月份格式(如18-Feb-23)
将Locale切换为Locale.ENGLISH,搭配d-MMM-yy模式(MMM对应英文月份缩写)即可解析:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d-MMM-yy", Locale.ENGLISH); LocalDate date = LocalDate.parse(row.soldDate, formatter);
2. 日期字符串确实是德语月份格式
先确认系统中德语Locale对应的月份缩写格式(不同本地化环境可能有差异,比如是否带点),可以用以下代码打印验证:
for (Month month : Month.values()) { System.out.println(month.getDisplayName(TextStyle.SHORT, Locale.GERMAN)); }
假设输出的二月缩写是Feb.(带点),则调整日期字符串为18-Feb.-23后再解析:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d-LLL-yy", Locale.GERMAN); LocalDate date = LocalDate.parse("18-Feb.-23", formatter);
内容的提问来源于stack exchange,提问作者Maxim
相关产品推荐
相关产品推荐

