首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这个输入是Joda-Time PeriodFormatter的无效格式?

为什么这个输入是Joda-Time PeriodFormatter的无效格式?
EN

Stack Overflow用户
提问于 2022-05-31 21:14:08
回答 1查看 75关注 0票数 0

我正在尝试将字符串(如1h 30m 5s5m38s1h 3s )转换为表示总时间(以秒为单位)的整数值。例如,1m 20s将导致80秒内的整数值为80。

我在用Joda的时间:

代码语言:javascript
复制
PeriodFormatter formatter = new PeriodFormatterBuilder()
        .appendDays().appendSuffix("d").appendSeparatorIfFieldsAfter(" ")
        .appendHours().appendSuffix("h").appendSeparatorIfFieldsAfter(" ")
        .appendMinutes().appendSuffix("m").appendSeparatorIfFieldsAfter(" ")
        .appendSeconds().appendSuffix("s")
        .toFormatter();

int time = formatter.parsePeriod("30s").getSeconds(); //Throws IllegalArgumentException

使用我传入的几乎每一个字符串抛出一个IllegalArgumentException,表示“无效格式”。

我不明白为什么这不管用。我不能在没有illegalArgumentException的情况下把任何东西传递到这里。有人对如何调整我的格式化程序设置以达到我想要的结果有任何指导吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-01 01:30:21

Joda-Time项目现在处于维护模式。它的创建者继续领导JSR 310,它将现在内置到Java8及更高版本中的java.time类。

独立于时间线的ISO 8601标准一段时间的格式PnYnMnDTnHnMnS,其中P标志着开始,而T将这两个部分分开。

java.time类在解析/生成文本时默认使用ISO8601标准格式。因此,不需要指定格式模式。

所以我会用简单的文本操作来解决你的问题。删除您的空格字符。改为大写。

代码语言:javascript
复制
java.time.Duration.parse( "PT" + "1h 30m 5s".replace( " " , "" ).toUpperCase() )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72454198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档