将字符串转换为 LocalDate with/without 纳秒
Coverting String to LocalTime with/without nanoOfSeconds
我需要将字符串转换为 LocalTime(java-8 不是 joda),字符串中可能有也可能没有 nanoOfSeconds。字符串格式为
07:06:05
或 07:06:05.123456
该字符串在秒中可能有也可能没有小数位,如果有,则可以有任意数量的字符来表示纳秒部分。
使用 DateTimeForamtter,例如
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("H:mm:ss");
或
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("H:mm:ss.SSSSSS");
我可以使用 IF 语句来区分这两种格式,例如:
DateTimeFormatter dtf;
if (time1.contains(".") {
dtf = DateTimeFormatter.ofPattern("H:mm:ss.SSSSSS);
} else {
dtf = DateTimeFormatter.ofPattern("H:mm:ss);
}
这很好用,我对此很满意,但我还需要能够在小数点后使用不同数量的位置。
示例数据集可能是:
[11:07:59.68750, 11:08:00.781250, 11:08:00.773437500, 11:08:01]
有没有办法让格式化程序解析小数点后的任意位数,而不会在小数位数未知时抛出 java.time.format.DateTimeParseException
?
我希望我遗漏了一些非常简单的东西。
您可以为此使用格式模式的 "optional sections":
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("H:mm:ss[.SSSSSS]");
无需执行任何特殊操作即可解析此格式。 LocalTime.parse(String)
已经处理了可选的纳秒:
System.out.println(LocalTime.parse("10:15:30"));
System.out.println(LocalTime.parse("10:15:30."));
System.out.println(LocalTime.parse("10:15:30.1"));
System.out.println(LocalTime.parse("10:15:30.12"));
System.out.println(LocalTime.parse("10:15:30.123456789"));
我需要将字符串转换为 LocalTime(java-8 不是 joda),字符串中可能有也可能没有 nanoOfSeconds。字符串格式为
07:06:05
或 07:06:05.123456
该字符串在秒中可能有也可能没有小数位,如果有,则可以有任意数量的字符来表示纳秒部分。
使用 DateTimeForamtter,例如
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("H:mm:ss");
或
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("H:mm:ss.SSSSSS");
我可以使用 IF 语句来区分这两种格式,例如:
DateTimeFormatter dtf;
if (time1.contains(".") {
dtf = DateTimeFormatter.ofPattern("H:mm:ss.SSSSSS);
} else {
dtf = DateTimeFormatter.ofPattern("H:mm:ss);
}
这很好用,我对此很满意,但我还需要能够在小数点后使用不同数量的位置。
示例数据集可能是:
[11:07:59.68750, 11:08:00.781250, 11:08:00.773437500, 11:08:01]
有没有办法让格式化程序解析小数点后的任意位数,而不会在小数位数未知时抛出 java.time.format.DateTimeParseException
?
我希望我遗漏了一些非常简单的东西。
您可以为此使用格式模式的 "optional sections":
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("H:mm:ss[.SSSSSS]");
无需执行任何特殊操作即可解析此格式。 LocalTime.parse(String)
已经处理了可选的纳秒:
System.out.println(LocalTime.parse("10:15:30"));
System.out.println(LocalTime.parse("10:15:30."));
System.out.println(LocalTime.parse("10:15:30.1"));
System.out.println(LocalTime.parse("10:15:30.12"));
System.out.println(LocalTime.parse("10:15:30.123456789"));