Java中LocalDateTime解析带AM/PM日期字符串失败问题求助
问题根源及修复方案
你遇到的解析失败问题,核心是两个细节没处理好:
1. 月份缩写解析依赖Locale
Java的DateTimeFormatter默认采用系统本地的Locale,如果你的系统不是英文环境,Jul这类英文月份缩写就识别不了。至于May能成功,只是巧合——部分非英文Locale里五月的缩写刚好也是May,但其他英文月份缩写(比如Jul)就通不过。
2. 12小时制格式符用错了
你用的HH是24小时制的格式符,但输入字符串是带AM/PM的12小时制时间(比如07:47:00 PM),这里必须换成hh(12小时制格式符)。用HH的话,解析器会把07 PM当成24小时制的7点,和AM/PM标记矛盾,直接导致解析失败。
修复后的代码示例
String str1 = "Jul 13, 2021, 07:47:00 PM"; DateTimeFormatter formatter1 = new DateTimeFormatterBuilder() .parseCaseInsensitive() .appendPattern("MMM d, yyyy, hh:mm:ss a") .toFormatter(Locale.ENGLISH); // 强制指定英文Locale LocalDateTime dateTime1 = LocalDateTime.parse(str1, formatter1); System.out.println("Output: " + dateTime1);
运行这段代码会得到正确输出:Output: 2021-07-13T19:47
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

