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

使用dd-MMM-uuuu解析LocalDate触发DateTimeParseException如何解决

异常原因

你当前的解析格式与输入字符串格式不匹配,所以会抛出解析异常:

  • 待解析的输入字符串2021-10-31是年-月-日结构,对应格式符应为uuuu-MM-dd
  • 你写的解析格式dd-MMM-uuuu是日-月份缩写-年结构,和输入结构完全不符,无法正确解析。

实现方案

你需要分两步完成转换:先将输入字符串解析为LocalDate对象,再将该对象格式化为你需要的31-Oct-2021格式即可。
注意:MMM对应月份的本地化缩写,要输出英文的Oct类缩写,必须显式指定英文Locale,避免系统默认中文Locale输出中文月份。

完整可运行代码

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

public class DateConvertTest {
    public static void main(String[] args) {
        // 定义输入格式解析器
        DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("uuuu-MM-dd");
        String inputDateStr = "2021-10-31";
        // 解析得到LocalDate对象
        LocalDate localDate = LocalDate.parse(inputDateStr, inputFormatter);

        // 定义输出格式解析器,指定英文Locale
        DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("dd-MMM-uuuu", Locale.ENGLISH);
        // 格式化得到目标格式字符串
        String outputDateStr = localDate.format(outputFormatter);
        System.out.println(outputDateStr); // 输出:31-Oct-2021
    }
}

额外说明

  • 解析和格式化是两个独立流程,不能混用格式
  • 所有涉及本地化的格式符(比如MMM、EEE等)都建议显式指定Locale,避免不同环境运行结果不一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:15:05