如何解析格式的持续时间" HHmm"使用JodaTime?

时间:2016-04-05 11:10:01

标签: java jodatime

我试图将日期时间改为持续时间,我以格式" HHmm",例如" 0010"意思是10分钟。

我找到了类似的机票(Parsing time strings like "1h 30min"),但我无法正常使用。

以下是代码:

PeriodFormatter hoursMinutes = new PeriodFormatterBuilder().appendHours().appendMinutes().toFormatter();
Duration duration = hoursMinutes.parsePeriod("0010").toStandardDuration();
duration.getStandardMinutes(); //Returns 600

出于某种原因,我得到600分钟而不是10分钟。所以看起来分钟被解释为小时,但我不明白为什么。我尝试添加.maximumParsedDigits(2)几个小时,但结果是一样的。

为什么我的代码错了?有没有其他方法来初始化持续时间解析器?在某些地方,我可以使用标准格式,例如" HHmm"?

2 个答案:

答案 0 :(得分:2)

所以问题实际上是最大的解析数据。我只需要在几小时之前添加它,而不是几分钟。所以解决方案就是:

null

答案 1 :(得分:0)

根据documentation

  

getStandardMinutes

     

public long getStandardMinutes()

     

假设一分钟内有标准的毫秒数,以分钟为单位获取此持续时间的长度。此方法假定一分钟内有60秒,一秒钟内有1000毫秒。所有当前提供的年表都使用此定义。

     

返回getMillis()/ 60000.结果是整数除法,   因此,超过毫秒被截断。

     

返回:标准秒内持续时间的长度

看到600实际上是10分钟(60 * 10),你得到了预期的答案。