时间字符串为毫秒

时间:2016-10-02 17:01:19

标签: java time

好的,我有以下场景:如果我有一个字符串,例如5d6m9s,我将如何让Java识别为5天,6分钟和9秒,然后将其添加到当前毫秒以获得毫秒在5天,6分钟和9秒。子串会是最好的方法吗?

我很难解释,所以这里简化了: 5d6m9s - >毫秒+当前毫秒 - > 5天,6分钟和9个月的毫秒数。

5d6m9s只是一个例子,字符串可以是2w9h4m或3h7m。

提前致谢。

1 个答案:

答案 0 :(得分:1)

ISO 8601

如果不是作业,那么使用标准ISO 8601格式而不是自己设计。

ISO 8601标准在未附加到时间线的时间段内包含格式PnYnMnDTnHnMnSP标记开头,T将小时 - 月 - 日与小时 - 分 - 秒分开。

示例:

  • P4Y是四年。
  • P1M15D是一个半月。
  • PT1H30M是一个半小时。

java.time

java.time类取代了麻烦的旧遗留日期时间类。在解析和生成表示日期时间值的字符串时,java.time类默认使用ISO 8601格式。

两个类表示未附加到时间轴的时间跨度。请参阅Oracle Tutorial

搜索Stack Overflow以了解更多信息,因为您的问题确实与许多其他问题重复。了解此功能的java.time限制尤其重要:Formatting a Duration in Java 8 / jsr310

您可能希望跟踪 附加到时间轴的时间跨度。使用一对Instant对象。 ThreeTen-Extra项目为此提供了一个java.time-savvy Interval类。

您可以在某个时刻添加或减去句点或持续时间。

Instant.now()
       .plus( Duration.parse( "PT5H" ) );  // Add 5 hours