Groovy TimeCategory坏millseconds加法

Groovy TimeCategory坏millseconds加法,groovy,milliseconds,Groovy,Milliseconds,尝试此示例代码时: use(groovy.time.TimeCategory) { 800.millisecond + 300.millisecond } 在groovy web中,我得到了一个有趣的结果: 0.1100 seconds 有人知道为什么会发生这种情况或者如何修复它吗?这看起来像一个bug,持续时间包含1100毫秒,但当它打印出来时,它错误地将其转换为秒 编辑它现在被标记为2.0.6、1.8.9和2.1.0版的固定版本 同时,我想您需要自己进行从TimeDuration

尝试此示例代码时:

use(groovy.time.TimeCategory) {
    800.millisecond + 300.millisecond
}
在groovy web中,我得到了一个有趣的结果:

0.1100 seconds

有人知道为什么会发生这种情况或者如何修复它吗?

这看起来像一个bug,持续时间包含1100毫秒,但当它打印出来时,它错误地将其转换为秒

编辑它现在被标记为2.0.6、1.8.9和2.1.0版的固定版本

同时,我想您需要自己进行从TimeDuration到String的转换:-/


编辑 你可以这样做(可能有一种更整洁的方法)

显示
1.100秒

我还没有对这个方法做过大量的测试,所以请注意,它可以通过一些单元测试来确保它不会在其他情况下崩溃

groovy.time.TimeDuration.metaClass.normalize = { ->
  def newdmap = ['days','hours','minutes','seconds','millis'].collectEntries { 
    [ (it):delegate."$it" ]
  }.with { dmap ->
    [millis:1000,seconds:60,minutes:60,hours:24,days:-1].inject( [ dur:[ days:0, hours:0, minutes:0, seconds:0, millis:0 ], roll:0 ] ) { val, field ->
      val.dur."$field.key" = dmap."$field.key" + val.roll
      val.roll = val.dur."$field.key".intdiv( field.value )
      val.dur."$field.key" = field.value < 0 ?
                               val.dur."$field.key" :
                               val.dur."$field.key" % field.value
      val
    }.dur
  }
  new TimeDuration( newdmap.days, newdmap.hours, newdmap.minutes, newdmap.seconds, newdmap.millis )
}
use(groovy.time.TimeCategory) {
    800.millisecond + 300.millisecond
}.normalize()