java - 尽管格式化程序模式(java.time)不打印零秒
问题描述
我正在将 12 小时样式时间转换为 24 小时。问题是当秒数为“00”时,尽管有格式化程序模式,它们都不会被打印出来。为什么会发生这种情况以及如何打印零秒?
public static void main(String[] args) {
String time_1 = "07:05:40PM";
String time_2 = "07:05:00PM";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("hh:mm:ssa");
System.out.println("time_1 " + LocalTime.parse(time_1, formatter));
System.out.println("time_2 " + LocalTime.parse(time_2, formatter));
}
输出是:
time_1 19:05:40
time_2 19:05
解决方案
用于DateTimeFormatterBuilder#parseCaseInsensitive
以不区分大小写的方式解析时间。此外,请确保使用适当的格式来打印时间。
这样做
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
public class Main {
public static void main(final String[] args) {
String time_1 = "07:05:40PM";
String time_2 = "07:05:00PM";
// Format to parse input time-string
DateTimeFormatter formatter1 = new DateTimeFormatterBuilder()
.parseCaseInsensitive()
.appendPattern("hh:mm:ssa")
.toFormatter();
// 24-hour format
DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("HH:mm:ss");
System.out.println("time_1 " + LocalTime.parse(time_1, formatter1));
System.out.println("time_2 " + LocalTime.parse(time_2, formatter1));
System.out.println("time_2 " + formatter1.format(LocalTime.parse(time_2, formatter1)));
System.out.println("time_2 " + formatter2.format(LocalTime.parse(time_2, formatter1)));
}
}
输出:
time_1 19:05:40
time_2 19:05
time_2 07:05:00pm
time_2 19:05:00
推荐阅读
- c# - @inject HttpClient 与 @using System.Net.Http 之间的问题;在查看页面
- firebase - Flutter:NoSuchMethodError:在 null 上调用了 getter 'length'
- python - 根据日期差异从嵌套在另一个字典中的列表中删除字典
- c++ - 是否可以将某些函数参数设为对象外部私有但内部可访问?
- html - 如何抵消我的 col 以便可以点击链接?
- python - 功能:从 DataFrame 中查找 Col 名称
- c# - 如何在 2sxc 应用程序的详细信息视图中显示第二种语言?
- excel - 如何将此宏运行到每一行?
- powershell - 寻找 PS 命令以在用户登录时静默执行程序
- javascript - Web Serial API - 自动读取