任何人都知道Java库可以将时间字符串(例如“30min”或“2h 15min”或“2d 15h 30min”)解析为毫秒(或某种Duration对象)。 Joda-Time可以做这样的事情吗?
(我维护这种方法的方法很丑陋,并且想摆脱它/将其替换为性能更好的方法。)
最佳答案
您可能需要针对自己的格式进行一些调整,但可以尝试以下方法:
PeriodFormatter formatter = new PeriodFormatterBuilder()
.appendDays().appendSuffix("d ")
.appendHours().appendSuffix("h ")
.appendMinutes().appendSuffix("min")
.toFormatter();
Period p = formatter.parsePeriod("2d 5h 30min");
请注意,如果您需要使
appendSuffix
更灵活,则可以使用variants
参数。更新:Joda Time已添加了
Period.toStandardDuration()
,从那里您可以使用 getStandardSeconds()
以秒为单位获取经过的时间,作为long
。如果您使用的是没有这些方法的旧版本,则仍可以通过假设一天中的标准24/hr,60min/hr等来自己计算时间戳。(在这种情况下,请利用
DateTimeConstants
类中的常量避免使用魔数(Magic Number)。)