以这种格式 "HH:mma" (05:53PM) 显示 Java 8 时间 api 并添加仅包含分钟的设置时间

Display Java 8 Time api in this format "HH:mma" (05:53PM) and add set Time with only minutes

我想显示/打印出时间 02:15PM 并能够根据分钟设置时间(可能大于 59)。

这似乎不起作用:

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mma");
    String text = time.format(formatter);
    LocalTime parsedTime = LocalTime.parse(text, formatter);

它显​​示的时间像 16:15 所以它是错误的 12/24 格式(当然 am/pm 丢失了)

到目前为止我是这样设置时间的:

void setTime(int minutes) {
    time = LocalTime.of(minutes / 60, minutes % 60);
}

有没有更优雅的方法(阅读:不划分)?

我不想使用 Joda Time。

  1. 将"HH"替换为"hh":DateTimeFormatter formatter = DateTimeFormatter.ofPattern("hh:mma");
  2. 更优雅的按分钟设置时间的方式:LocalTime.ofSecondOfDay(minutes * 60)

如前所述,使用 hh 而不是 HH 作为 AM/PM 时钟。 the javadoc 中详细列出了模式列表。示例:

LocalTime time = LocalTime.of(18, 0);
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("hh:mma");
System.out.println(fmt.format(time)); //06:00PM

至于从分钟数创建时间,您可以使用:

LocalTime.MIDNIGHT.plusMinutes(minutes);