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

Java 8中SimpleDateFormat与LocalDateTime解析12小时制日期抛异常

问题根源:Locale(本地化)设置不匹配

你的问题出在日期格式化工具的默认Locale与你使用的am/pm缩写不兼容上。

Java的SimpleDateFormat和java.time包下的DateTimeFormatter,默认会使用系统当前的Locale来解析a(代表上午/下午的模式符号)。不同Locale对上午/下午的缩写规则不一样:

  • 美式英语(Locale.US)支持无点的am/pm
  • 有些Locale(比如英式英语Locale.UK,或者非英语Locale)只识别带点的a.m./p.m.

如果你的系统默认Locale不是美式英语,就会出现你遇到的:能解析a.m.但无法解析am的情况。


解决方案

1. 针对SimpleDateFormat(旧API)

创建SimpleDateFormat实例时,显式指定Locale.US(或支持am/pm的Locale):

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

public class MainClass {
    public static void main(String[] args) {
        String format = "yyyy-MM-dd hh:mm a";
        String strDateTime = "2016-03-04 11:30 am";
        // 显式指定Locale.US
        SimpleDateFormat sdformat = new SimpleDateFormat(format, Locale.US);
        try {
            Date date = sdformat.parse(strDateTime);
            System.out.println(sdformat.format(date)); // 输出:2016-03-04 11:30 AM
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

2. 针对LocalDateTime(Java 8+新API)

同样,创建DateTimeFormatter时指定Locale.US:

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

public class MainClass {
    public static void main(String[] args) {
        String format = "yyyy-MM-dd hh:mm a";
        String strDateTime = "2016-03-04 11:30 am";
        // 显式指定Locale.US
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format, Locale.US);
        try {
            LocalDateTime dateTime = LocalDateTime.parse(strDateTime, formatter);
            System.out.println(dateTime.format(formatter)); // 输出:2016-03-04 11:30 AM
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

补充说明

你提到“此前该代码运行正常”,大概率是因为之前运行代码的环境默认Locale是美式英语,而现在的环境默认Locale发生了变化(比如切换到了中文、英式英语等),导致解析规则不匹配。显式指定Locale可以避免这种环境带来的差异,让代码在不同环境下都能稳定运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:32:03