无法将文本解析为java8中的Duration

时间:2016-01-11 18:59:32

标签: java

我正在尝试将文本解析为持续时间,如下所示:

  final Duration duration = TimeUtil.parseDuration("1.0:00:00");

但是我收到以下错误,

Text cannot be parsed to a Duration

所以有人能告诉我问题出在哪里吗?

2 个答案:

答案 0 :(得分:1)

如果您正在使用协议缓冲区“TimeUtil,则指定一个持续时间,其中秒数与纳秒间隔一段时间。如果持续时间为负,则该值可以由减号引导(以便将持续时间添加到时间将相对于时间移动到过去)。该字符串必须以“s”结尾。

您可以在公共git [hub] repo的parse中看到协议缓冲区持续时间非常简单toStringTimeUtil

考虑到持续时间的类型,我猜它们被用于计算日期时间,这些时间在内部表示为自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.parsemore clearly documented并且可能会出现此类错误消息。

答案 1 :(得分:1)

如果猜到API:

parseDuration(String duration)作为参数:

  

持续时间 - “3h”或“2mn”或“7s”或null。

取自java.lang.Object ninja.utils.TimeUtil API。它返回秒数。

然后"1.0:00:00"显然不被解析。