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

DateTimeFormatter解析JUN格式月份日期失败的问题咨询

DateTimeFormatter解析JUN格式月份日期失败的问题咨询

嗨,你这个问题我之前也碰到过!其实根源就是**Locale(区域设置)**在搞鬼~

你当前代码里的DateTimeFormatter默认用的是JVM的系统默认Locale,如果你的默认Locale不是英文环境,MMM这个模式就识别不了英文的月份缩写"JUN",这就是为啥报错说在索引0的位置解析失败——它根本认不出"JUN"是什么月份呀。

给你两个实用的解决办法:

  • 创建Formatter时直接指定英文Locale
    最简单的方式就是在ofPattern方法里多传一个英文Locale参数,比如Locale.US或者Locale.ENGLISH,修改后的代码如下:

    String dateString = "JUN 2023"; 
                                          
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMM yyyy", Locale.US);
    try {
        YearMonth startDateL = YearMonth.parse(dateString, formatter);
        System.out.println(startDateL); 
    } catch (Exception e) {
        System.out.println("Error parsing YearMonth: " + e.getMessage());
    }
    
  • 全局设置JVM默认Locale为英文(按需使用)
    如果你的整个应用都需要基于英文环境解析日期,可以在程序启动时设置默认Locale:

    Locale.setDefault(Locale.US);
    

    不过要注意,这个设置会影响整个JVM里所有依赖Locale的功能,比如数字格式、消息国际化这些,所以得根据你的实际场景来用。

你可以试试第一个方法,加上Locale参数后,代码应该就能正常把"JUN 2023"解析成2023-06啦。

备注:内容来源于stack exchange,提问作者Dattatreya Kugve

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 10:58:05