首页 > 解决方案 > 使用 AM/PM 进行 LocalTime 解析

问题描述

我有一个来自另一个来源的时间字符串,格式为“hh:mma”,例如 10:00a 或 07:30p。我需要LocalTime从该字符串创建一个实例。我试图通过调用方法来解析它: LocalTime.parse("10:00p", DateTimeFormatter.ofPattern("hh:mma")),但它抛出一个DateTimeParseException. 根据DateTimeFormatter API,部分时间应为大写并由 2 个字母组成(PM 而不是 p)。但是有没有什么方法可以在不改变源行的情况下解析时间?

标签: javadatetime

解决方案


替换pPM, awith 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

推荐阅读