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

DateTimeParseException:文本无法解析为Duration

笪德华
2023-03-14

我在分析持续时间时遇到问题:

// import java.time.Duration;
...
Duration d = Duration.parse("1h");
...

如果我对文档的理解正确,我应该能够使用1h值,但我遇到了以下异常

DateTimeParseException: Text cannot be parsed to a Duration

我从一些配置中检索< code>1h值,为了简单起见,我省略了其他代码。

我该怎么解决这个问题?

共有2个答案

洪高刚
2023-03-14

根据文档:

字符串以可选符号开头,由ASCII负号或正号表示。如果为负数,则整个期间为负数。ASCII字母“P”是下一个大写或小写字母。然后有四个部分,每个部分由一个数字和一个后缀组成。这些部分的ASCII后缀为“D”、“H”、“M”和“S”,表示天、小时、分钟和秒,可以大写或小写。后缀必须按顺序出现。ASCII字母“T”必须出现在小时、分钟或第二段的第一次出现之前(如果有的话)。四个部分中至少有一个必须存在。。。

您解析的字符串必须以大写或小写的< code >“PT”开头。

小时部分的字母“H”也可以是大写或小写。

System.out.println(Duration.parse("pt1h"));

输出:

PT1H
方韬
2023-03-14

您没有使用正确的格式,请使用以下格式 -

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

  • 问题内容: 我有以下代码将Instant转换为String,然后将其转换回I 它将timestampString打印为: 并未能解析该字符串: 为什么即使我将时间戳转换为相同的格式也无法解析它? 问题答案: 在一天中的小时内使用HH代替hh 您要问的问题是(两次)在格式模式字符串中使用小写字母。您需要从00到23的小时中的大写字母,是从01到12的AM或PM中的小时数。因此出了问题,java.ti

  • 我有以下代码将即时转换为字符串,然后将其转换回I 它将timestampString打印为: 在分析字符串时失败: 为什么即使它与我将时间戳转换为的格式相同,它也无法解析它?

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

  • 我试图将文本解析为持续时间,如下所示: 但是我得到以下错误, 有人能告诉我我的问题在哪里吗?