使用/不使用nanoOfSeconds将字符串转换为LocalTime [英] Coverting String to LocalTime with/without nanoOfSeconds

查看:823
本文介绍了使用/不使用nanoOfSeconds将字符串转换为LocalTime的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要将一个字符串转换为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"));

以上所有解析都很好,另见 Javadoc spec

All the above parse fine, see also the Javadoc spec.

这篇关于使用/不使用nanoOfSeconds将字符串转换为LocalTime的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆