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

Java转换带星期的日期字符串抛出DateTimeParseException如何处理

问题原因

报错提示在字符串索引0位置解析失败,核心是DateTimeFormatter默认使用JVM当前运行环境的Locale:如果你的系统默认Locale为非英语区域(比如中文Locale),无法识别英文星期缩写Mon,就会抛出解析异常。

解决方案

方案1:无需修改原字符串,直接指定Locale转换(推荐)

只需要在创建DateTimeFormatter时指定对应英文区域的Locale即可,代码示例:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        String s = "Mon, 11-12-2021 - 12:00";
        // 构造格式化器时指定英文Locale,识别英文星期缩写
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE, MM-dd-yyyy - HH:mm", Locale.US);
        LocalDateTime localDateTime = LocalDateTime.parse(s, formatter);
    }
}

方案2:调整原字符串后转换

如果确实不想指定Locale,也可以先把字符串前的星期标识移除,再调整匹配规则:

String s = "Mon, 11-12-2021 - 12:00";
// 截取逗号后部分的内容
String newStr = s.substring(s.indexOf(",") + 1).trim();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM-dd-yyyy - HH:mm");
LocalDateTime localDateTime = LocalDateTime.parse(newStr, formatter);
注意事项

要注意格式符的匹配关系:MM代表月份,dd代表日期,如果你给出的示例字符串11-12-2021是12月11日的含义,需要把格式符调整为dd-MM-yyyy。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:15:03