簡體   English   中英

使用/不使用nanoOfSeconds將字符串轉換為LocalTime

[英]Coverting String to LocalTime with/without nanoOfSeconds

我需要將一個字符串轉換為LocalTime(java-8而不是joda),該字符串可能有也可能沒有nanoOfSeconds。 字符串格式的形式為07:06:0507:06:05.123456字符串在秒內可能有或沒有小數位,當它出現時,可能有任意數量的字符來表示Nano Seconds部分。

使用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時拋出java.time.format.DateTimeParseException

我希望我遺漏一些非常簡單的東西。

沒有必要做任何特殊的事情來解析這種格式。 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"));

以上所有解析都很好,另見Javadoc 規范

您可以使用格式模式的“可選部分”:

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("H:mm:ss[.SSSSSS]");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM