Ada*_*aev 1 java datetime-format localdatetime datetimeformatter
我发现了非常有趣的错误或类似的东西。
我使用这种日期格式MMM d, yyyy hh:mm:ss a,它会像这样打印日期
Aug 13, 2020 01:19:50 pm
Run Code Online (Sandbox Code Playgroud)
但是,当我分析Nov 20, 2016 12:00:00 AM到LocalDateTime,它抛出异常
java.time.format.DateTimeParseException: Text 'Nov 20, 2016 12:00:00 AM' could not be parsed at index 22.
Run Code Online (Sandbox Code Playgroud)
在我将 'AM' 更改为 'am' 后,它完美运行!所以LocalDateTime字面上无法解析日期,因为大写 a?p?e?s?字母?我该如何解决这个问题,而不用将 'AM' 替换为 'am' 并将 'PM' 替换为 'pm'
编辑
SimpleDateTime格式没有这个问题,他忽略了 a?p?e?s? 字母寄存器(我的意思是大写或小写)我不想转换Date为LocalDateTime
编辑 2
MMM d, yyyy hh:mm:ss A 将 'a' 替换为 'A' 也不起作用
您需要以不区分大小写的方式解析它。此外,请确保使用英语语言环境(例如Locale.ENGLISH,Locale.US等),因为元素的名称在相应语言环境中用本地化字符串表示。
演示:
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
// Given date-time string
String strDateTime = "Nov 20, 2016 12:00:00 AM";
// Define the formatter
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.parseCaseInsensitive()
.appendPattern("MMM d, u h:m:s a")
.toFormatter(Locale.ENGLISH);
// Parse the given date-time into LocalDateTime using formatter
LocalDateTime ldt = LocalDateTime.parse(strDateTime, formatter);
System.out.println(ldt);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
2016-11-20T00:00
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
177 次 |
| 最近记录: |