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

Java解析yyyy MMM d HH:mm:ss日期报Unparseable date异常如何解决

异常原因

你的代码抛出Unparseable date异常核心是SimpleDateFormat的月份格式MMM和默认语言环境不匹配:

  • MMM是月份的本地化短文本表示,SimpleDateFormat默认会取JVM当前运行环境的系统Locale,比如中文环境下MMM对应的是「一月」「二月」这类中文月份缩写,而你待解析的字符串里的月份是英文缩写Mar,默认非英文Locale下无法识别该字符串。

解决办法

构造SimpleDateFormat的时候显式指定英文Locale就可以正常解析了,修改后的代码如下:

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class DateParseDemo {
    public static void main(String[] args) throws Exception {
        String s = "2020 Mar 11 11:09:42";
        // 构造时指定英文Locale,保证MMM按英文月份缩写解析
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy MMM d HH:mm:ss", Locale.US);
        Date parsedDate = formatter.parse(s);
    }
}

Java 8+优化方案

如果使用JDK8及更高版本,更推荐用java.time包下的线程安全类完成解析,避免SimpleDateFormat的线程安全隐患,示例代码如下:

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

public class DateParseDemo {
    public static void main(String[] args) {
        String s = "2020 Mar 11 11:09:42";
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy MMM d HH:mm:ss", Locale.US);
        LocalDateTime parsedDate = LocalDateTime.parse(s, formatter);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:36:04