You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用德语Locale解析日期字符串时遇DateTimeParseException错误求助

解决德语Locale日期解析的DateTimeParseException问题

我来帮你排查这个问题!你遇到的DateTimeParseException核心原因是德语星期缩写的格式不匹配。

错误原因分析

在Java的Locale.GERMAN环境中,星期几的短缩写(对应你用的EE模式)默认是带句点的:比如周三(Mittwoch)的标准缩写是Mi.,但你的输入字符串里是Mi(不带句点),这就导致解析器在索引0的位置就无法匹配,直接抛出错误。

而月份部分Mai是没问题的——德语里五月的缩写就是Mai,和MMM模式完全匹配。

解决方案

根据你的需求,有两种可行的解决方式:

方案1:修改输入字符串(最简单)

如果可以调整输入的日期字符串,只需要给星期缩写加上句点,让它符合德语Locale的标准格式:

String dateString = "Mi. Mai 09 09:17:24 2018"; // 给Mi加上句点
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("EE MMM dd HH:mm:ss yyyy", Locale.GERMAN);
LocalDateTime dateTime = LocalDateTime.parse(dateString, dtf);

这样原代码就能正常运行。

方案2:自定义DateTimeFormatter适配不带句点的缩写(无需修改输入)

如果不能修改输入字符串,就需要构建一个能识别不带句点缩写的解析器。可以用DateTimeFormatterBuilder来实现,让它同时兼容带点和不带点的星期格式:

String dateString = "Mi Mai 09 09:17:24 2018";
DateTimeFormatter dtf = new DateTimeFormatterBuilder()
        // 匹配带点或不带点的星期缩写
        .appendPattern("EE")
        .optionalStart().appendLiteral(".").optionalEnd()
        // 拼接剩余的日期格式
        .appendPattern(" MMM dd HH:mm:ss yyyy")
        .toFormatter(Locale.GERMAN);

LocalDateTime dateTime = LocalDateTime.parse(dateString, dtf);

或者,如果你想更精准地指定每个星期的缩写(避免依赖系统Locale的差异),可以手动映射星期值和对应的缩写:

String dateString = "Mi Mai 09 09:17:24 2018";

// 手动映射德语星期缩写(不带句点)
Map<Long, String> weekdayAbbrs = new HashMap<>();
weekdayAbbrs.put(DayOfWeek.MONDAY.getValue(), "Mo");
weekdayAbbrs.put(DayOfWeek.TUESDAY.getValue(), "Di");
weekdayAbbrs.put(DayOfWeek.WEDNESDAY.getValue(), "Mi");
weekdayAbbrs.put(DayOfWeek.THURSDAY.getValue(), "Do");
weekdayAbbrs.put(DayOfWeek.FRIDAY.getValue(), "Fr");
weekdayAbbrs.put(DayOfWeek.SATURDAY.getValue(), "Sa");
weekdayAbbrs.put(DayOfWeek.SUNDAY.getValue(), "So");

DateTimeFormatter dtf = new DateTimeFormatterBuilder()
        .appendText(ChronoField.DAY_OF_WEEK, weekdayAbbrs)
        .appendPattern(" MMM dd HH:mm:ss yyyy")
        .toFormatter(Locale.GERMAN);

LocalDateTime dateTime = LocalDateTime.parse(dateString, dtf);

这两种方式都能解决你的解析错误问题,你可以根据实际场景选择合适的方案。

内容的提问来源于stack exchange,提问作者emoleumassi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:33:39