如何将 "Nov 20, 2016 12:00:00 AM" 解析为 LocalDateTime?
How do I parse "Nov 20, 2016 12:00:00 AM" to LocalDateTime?
我发现了非常有趣的错误或类似的错误。
我使用这种日期格式MMM d, yyyy hh:mm:ss a
,它会像这样打印日期
Aug 13, 2020 01:19:50 pm
但是,当我将 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.
我把'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' 也没有用
您需要以case-insensitive的方式解析它。此外,请确保使用英语语言环境(例如 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);
}
}
输出:
2016-11-20T00:00
我发现了非常有趣的错误或类似的错误。
我使用这种日期格式MMM d, yyyy hh:mm:ss a
,它会像这样打印日期
Aug 13, 2020 01:19:50 pm
但是,当我将 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.
我把'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' 也没有用
您需要以case-insensitive的方式解析它。此外,请确保使用英语语言环境(例如 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);
}
}
输出:
2016-11-20T00:00