【发布时间】:2020-04-24 14:55:37
【问题描述】:
我不知道如何只解释“时间”,所以我想从一个例子开始。
当我写一个电影播放器时,我想以毫秒为单位表示开始时间(00:00:00)为 0,如果当前帧位置在 5 分钟(00:05:00)上,则为 300,000(5 * 60 * 1000)。
我不在乎现实世界中的时区、日历或时钟信息。
但是,例如 JodaTime,Instant 与 Unixtime 相关(基于 1970),Interval、Duration 和 Period 基于 Instant,而LocalTime 基于 24-小时(将小时字段强制为 1-24)。
当然,我可以手动将“00:05:00”解析为 300,000,但我想知道如何使用 JodaTime 或其他库来实现这个目标。
【问题讨论】:
-
您确定
Duration不是您想要的吗?我不确定 JodaTime,但 Java 时间Duration(基于 JodaTime)就代表了一个持续时间。 -
持续时间是一个时间跨度的长度,它准确地描述了你提到的概念。我同意 Slaw 的观点,因为我不明白为什么
Duration不符合您的需求。 -
顺便说一句,如果可以的话,您应该使用更新的 Java 日期和时间 API,在
java.time包中提供,而不是 Joda Time。后者处于维护模式,他们自己的网站建议在 About 部分移至java.time。 -
@Slaw 我认为
Duration是millis 持有人。没错,它没有时钟信息,但是Duration需要millis 来实例化。否则,它提供parse方法,但它需要特定的格式化字符串。无法将自定义格式化字符串(例如 00:05:00)转换为毫秒或Duration。也无法将Duration格式化为字符串。 -
关于
java.timepre Java 8的Android支持:github.com/JakeWharton/ThreeTenABP
标签: java android time jodatime