我正在尝试将文本解析为持续时间,如下所示:
final Duration duration = TimeUtil.parseDuration("1.0:00:00");
但是我收到以下错误,
Text cannot be parsed to a Duration
所以有人能告诉我问题出在哪里吗?
答案 0 :(得分:1)
如果您正在使用协议缓冲区“TimeUtil
,则指定一个持续时间,其中秒数与纳秒间隔一段时间。如果持续时间为负,则该值可以由减号引导(以便将持续时间添加到时间将相对于时间移动到过去)。该字符串必须以“s”结尾。
您可以在公共git [hub] repo的parse中看到协议缓冲区持续时间非常简单toString和TimeUtil
。
考虑到持续时间的类型,我猜它们被用于计算日期时间,这些时间在内部表示为自unix时代以来的64位纳秒时间。
换句话说,它们似乎是有效的持续时间:
"1s" // one second forward
"1.0s" // one second forward
"1.01s" // one second, 10,000,000 nano seconds forward
"-1.01s" // one second, 10,000,000 nano seconds backward
"60s" // one minute forward
"-86400s" // yesterday (one day backward)
// [assuming no daylight savings changes or leap seconds happened]
协议缓冲区'TimeUtil.parseDuration
不会向您提供您所说的错误消息,并且完全不像Duration.parse
,more clearly documented并且可能会出现此类错误消息。
答案 1 :(得分:1)
如果猜到API:
parseDuration(String duration)
作为参数:
持续时间 - “3h”或“2mn”或“7s”或null。
取自java.lang.Object ninja.utils.TimeUtil
API。它返回秒数。
然后"1.0:00:00"
显然不被解析。