任何人都知道可以将时间字符串(例如“30min”或“2h 15min”或“2d 15h 30min”)解析为毫秒(或某种 Duration 对象)的 Java 库。 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 小时/小时、60 分钟/小时等来自己计算时间戳(在这种情况下,请利用DateTimeConstants
类来避免需要魔数(Magic Number)。)
关于java - 解析时间字符串,如 "1h 30min",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6403851/