java - 使用 AM/PM 进行 LocalTime 解析
问题描述
我有一个来自另一个来源的时间字符串,格式为“hh:mma”,例如 10:00a 或 07:30p。我需要LocalTime
从该字符串创建一个实例。我试图通过调用方法来解析它:
LocalTime.parse("10:00p", DateTimeFormatter.ofPattern("hh:mma"))
,但它抛出一个DateTimeParseException
. 根据DateTimeFormatter API,部分时间应为大写并由 2 个字母组成(PM 而不是 p)。但是有没有什么方法可以在不改变源行的情况下解析时间?
解决方案
替换p
为PM
, a
with AM
,然后用 pattern 解析hh:mm a
。
String time = "10:00p";
time = time.replace("p", "PM").replace("a", "AM"); // 10:00PM
LocalTime localTime = LocalTime.parse(time, DateTimeFormatter.ofPattern("hh:mm a", Locale.US));
System.out.println(localTime); // 22:00