好的,我有以下场景:如果我有一个字符串,例如5d6m9s,我将如何让Java识别为5天,6分钟和9秒,然后将其添加到当前毫秒以获得毫秒在5天,6分钟和9秒。子串会是最好的方法吗?
我很难解释,所以这里简化了: 5d6m9s - >毫秒+当前毫秒 - > 5天,6分钟和9个月的毫秒数。
5d6m9s只是一个例子,字符串可以是2w9h4m或3h7m。
提前致谢。
答案 0 :(得分:1)
如果不是作业,那么使用标准ISO 8601格式而不是自己设计。
ISO 8601标准在未附加到时间线的时间段内包含格式PnYnMnDTnHnMnS
。 P
标记开头,T
将小时 - 月 - 日与小时 - 分 - 秒分开。
示例:
P4Y
是四年。P1M15D
是一个半月。PT1H30M
是一个半小时。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