java - 解析时间字符串,如 "1h 30min"

标签 java parsing time jodatime

任何人都知道可以将时间字符串(例如“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/

相关文章:

java - 如何在Java中解析JSON

java - 如何在 Java 中计算事件的耗时?

java - 将新记录从一个数据库复制到另一个数据库

java - 有没有类似于本地 swift 和 java 开发者的 React Storybook 的东西?

c# - 如何将 HTML 表格内容提取到 DataTable

c# - 如何将 DateTime.TryParse() 用于非英语语言(如阿拉伯语)?

java - 方法与类型中的另一种方法具有相同的删除 - 第 2 部分

java - 如何选择 java swing JComboBox 或任何其他类似 jComponent 中的所有项目

PHP 设置日期 ('w' ) 函数将星期日返回为 7,而不是 0

android - Android 中 GMT 和 UTC 的区别