在JAVA中如何从持续时间中获取日期格式?

在JAVA中如何从持续时间中获取日期格式?,java,android,kotlin,simpledateformat,date-format,Java,Android,Kotlin,Simpledateformat,Date Format,我有一个类似于0DT3H10M的持续时间格式。所以我们需要知道如何解析这种日期 我想要 0 Days 3 Hours and 10 Minutes 以特定的格式 我已经尝试过用字符手动解析它,但在android中是否有其他方法或库可供使用?Duration 我猜字符串表示三小时十分钟的持续时间 不幸的是,该字符串不符合java.time类Duration和Period中默认使用的值。标准以P开头所有此类字符串。该标准用T将任何年、月、日和任何时、分、秒分开。因此,三小时十分钟的输入将是PT3

我有一个类似于0DT3H10M的持续时间格式。所以我们需要知道如何解析这种日期

我想要

0 Days 3 Hours and 10 Minutes 
以特定的格式

我已经尝试过用字符手动解析它,但在android中是否有其他方法或库可供使用?

Duration 我猜字符串表示三小时十分钟的持续时间

不幸的是,该字符串不符合java.time类
Duration
Period
中默认使用的值。标准以
P
开头所有此类字符串。该标准用
T
将任何年、月、日和任何时、分、秒分开。因此,三小时十分钟的输入将是
PT3H10M

您需要使用自己的代码解析字符串。然后使用提取的值设置
java.time.Duration
对象的值

您可以通过简单地预先添加
p
来遵守标准。我之所以不推荐这种方法,只是因为您需要查看可能收到的值的范围,以验证这种方法是否有效

Duration.parse( "P" + "0DT3H10M" )

提示:向输入数据的发布者介绍ISO 8601

这是一种日期格式吗?结尾看起来像时间3:10,由H和M分隔,但我没有看到任何日期。我认为,您需要创建自己的解析器。在这里发布更多这些日期的示例。您发布的内容不足以构建解析器。您可以创建一个正则表达式模式并相应地匹配字符串。它可能是一个持续时间:0天3小时10分钟。在前面添加一个
P
,然后
Duration
解析它。非常感谢Basil的回答,但我正在将此集成到android中,此调用需要API级别26,所以我不能使用此方法。@MohitDholakia是的,您可以。对于早期的Android,请参阅ThreeTen Backport和ThreeTenABP项目。涵盖了许多其他问题和答案。