解析时间字符串,如“1h 30min”
任何人都知道一个Java库,它可以将时间字符串(如“30min”或“2h 15min”或“2d 15h 30min”)解析为毫秒(或某种持续时间对象)。Joda-Time可以做这样的事情吗?
(我有一个丑陋的长方法可以维护,可以进行这样的解析,并希望摆脱它/用做得更好的东西替换它。
任何人都知道一个Java库,它可以将时间字符串(如“30min”或“2h 15min”或“2d 15h 30min”)解析为毫秒(或某种持续时间对象)。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