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

Java中LocalDate格式化dd.MMM.yyyy出现双点问题如何解决

Java LocalDate使用dd.MMM.yyyy格式化出现双点问题的修复方案

根因分析

该问题由本地化规则导致:

  • MMM格式符对应月份的短文本缩写,输出内容由当前使用的Locale决定
  • 部分地区的Locale规则中,月份短缩写默认自带末尾句点,比如部分英语Locale下1月的缩写为Jan.而非Jan
  • 格式串dd.MMM.yyyy中MMM后手动添加的句点,会和缩写自带的句点重合,最终出现01.Jan..2000的双点效果

修复方案

方案1:显式指定无自带句点的Locale

选择月份短缩写默认不带句点的Locale(比如Locale.US),在构造格式化器时显式传入即可,这是最推荐的标准化解决方案:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MMM.yyyy", Locale.US);
// 测试格式化
LocalDate testDate = LocalDate.of(2000, 1, 1);
String result = testDate.format(formatter); // 输出结果为 01.Jan.2000

方案2:调整格式串适配当前Locale

如果你必须保留当前默认的Locale,直接去掉格式串中MMM后面的多余句点即可:

// 适配自带句点的Locale,删除MMM后手动添加的句点
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MMMyyyy");
LocalDate testDate = LocalDate.of(2000, 1, 1);
String result = testDate.format(formatter); // 输出结果为 01.Jan.2000

方案3:自定义月份输出

如果需要完全控制输出格式不随Locale变化,可以先单独提取各日期字段,对月份缩写做去句点处理后再自行拼接字符串,灵活度更高但代码冗余度更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:24:07