当前位置: 首页 > 知识库问答 >
问题:

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

申屠鹏
2023-03-14

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

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

但是我得到以下错误,

Text cannot be parsed to a Duration

有人能告诉我我的问题在哪里吗?

共有2个答案

蒙化
2023-03-14

如果猜测API:

parseDuration(字符串持续时间)作为参数:

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

摘自java。郎。对象忍者。utils。TimeUtilAPI。它返回秒数。

那么"1.0:00:00"显然不是要解析的。

林博厚
2023-03-14

如果您使用协议缓冲区的TimeUtil,您将指定一个持续时间,秒与纳秒之间用一个周期隔开。如果持续时间为负数,该值可能以减号开头(因此将持续时间添加到时间将相对于时间移动到过去)。字符串必须以“s”结尾。

您可以在公共git[hub]repo的TimeUtil中看到协议缓冲区持续时间的非常简单的解析和toString。

考虑到持续时间的类型,我猜想它们用于计算自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]

Protocol Buffers的TimeUtil.parseDuration不会给你你说你得到的错误消息,而且一点也不像Duration.parse,后者记录得更清楚,可能会给你那种错误消息。

 类似资料:
  • 我在分析时遇到问题: 如果我对文档的理解正确,我应该能够使用值,但我遇到了以下异常: 我从一些配置中检索< code>1h值,为了简单起见,我省略了其他代码。 我该怎么解决这个问题?

  • 我无法理解为什么当我通过的文本符合格式时,我会得到DateTimeParseException错误。下面是导致该问题的代码: 奇怪的是。每当我查询用户一段时间(让我们以00:02:30为例),它就会完全按照我想要的方式运行。但是当我使用我的方法(从文本文件中提取时间)时,它会出现错误: 线程“main”java.time.format.DateTimeParseException中出现异常:无法分

  • 我在解析持续时间时遇到问题: 如果我对文档的理解正确,我应该能够使用1h值,但我得到了以下例外: 我从一些配置中检索1h值,为了简单起见,我省略了其他代码。 我怎样才能解决这个问题?

  • 尝试在我基于Maven的项目的基于Groovy的单元测试中使用groovy.text.XmlTemplateEngine,并将gmaven插件配置如下 我的命令行build mvn clean install无法编译我的简单Groovy单元测试文件,并显示错误消息 [错误]file:/User/.../my-service/src/test/groovy/myapp/MyApplicationes

  • 我使用Java8来解析日期并找出两个日期之间的差异。 以下是我的片段: 当我运行时,我得到了错误: java.time.format.DateTimeParseException:无法在索引3解析文本