使用/不使用nanoOfSeconds将字符串转换为LocalTime [英] Coverting String to LocalTime with/without nanoOfSeconds
问题描述
我需要将一个字符串转换为LocalTime(java-8而不是joda),该字符串可能有也可能没有nanoOfSeconds。 String格式的形式为
07:06:05
或 07:06:05.123456
字符串在秒内可能有或没有小数位,当它出现时,可以有任意数量的字符来表示Nano Seconds部分。
I need to convert a string to LocalTime (java-8 not joda) that may or maynot have nanoOfSeconds in the string. The String format is in the form of
07:06:05
or 07:06:05.123456
The string may or may not have a decimal place in the seconds and when it does there could be any number of characters to represent the Nano Seconds part.
使用DateTimeForamtter,例如
Using a DateTimeForamtter such as
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("H:mm:ss");
或
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("H:mm:ss.SSSSSS");
我可以使用IF语句来区分两种格式,例如:
I can use an IF statement to distinguish between the two formats such as:
DateTimeFormatter dtf;
if (time1.contains(".") {
dtf = DateTimeFormatter.ofPattern("H:mm:ss.SSSSSS);
} else {
dtf = DateTimeFormatter.ofPattern("H:mm:ss);
}
这很好,我' m好吧,但我需要能够在小数点后使用不同数量的位置。
This works fine and I'm OK with this but I need to be able to also use a varying number of positions after the decimal point.
示例数据集可能是:
[11:07:59.68750, 11:08:00.781250, 11:08:00.773437500, 11:08:01]
有没有办法允许格式化程序解析小数点后的任意位数而不抛出 java.time.format.DateTimeParseException
当小数位数未知时?
Is there a way to allow the formatter to parse any number of digits after the decimal without it throwing a java.time.format.DateTimeParseException
when the number of decimal places is unknown?
我希望我遗漏一些非常简单的东西。
I'm hoping I missing something really simple.
推荐答案
没有必要做任何特殊的事情来解析这种格式。 LocalTime.parse(String)
已处理可选的纳秒:
There is no need to do anything special to parse this format. LocalTime.parse(String)
already handles optional nanoseconds:
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"));
All the above parse fine, see also the Javadoc spec.
这篇关于使用/不使用nanoOfSeconds将字符串转换为LocalTime的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!