以这种格式 "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。
- 将"HH"替换为"hh":
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("hh:mma");
- 更优雅的按分钟设置时间的方式:
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);
我想显示/打印出时间
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。
- 将"HH"替换为"hh":
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("hh:mma");
- 更优雅的按分钟设置时间的方式:
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);