在Groovy中将秒整数格式化为时间

在Groovy中将秒整数格式化为时间,groovy,Groovy,我有一个以秒为单位的变量,比如990,它是16分30秒。如何在Groovy中将其转换为时间00:16:30 同样,如何将其转换为其他方式?给您: def c = Calendar.instance c.clear() c.set(Calendar.SECOND, 990) assert c.format('HH:mm:ss') == '00:16:30' 我想在纯groovy中可以做得更聪明一点;) 同样,整个解决方案: Calendar.instance.with { clear(

我有一个以秒为单位的变量,比如
990
,它是16分30秒。如何在Groovy中将其转换为时间
00:16:30

同样,如何将其转换为其他方式?

给您:

def c = Calendar.instance
c.clear()
c.set(Calendar.SECOND, 990)

assert c.format('HH:mm:ss') == '00:16:30'
我想在纯groovy中可以做得更聪明一点;)

同样,整个解决方案:

Calendar.instance.with {
    clear()
    set(Calendar.SECOND, 990)

    assert format('HH:mm:ss') == '00:16:30'

    def time = '00:16:30'.split(':')*.toInteger()
    clear()
    set(Calendar.MINUTE, time[1])
    set(Calendar.SECOND, time[2])
    assert (timeInMillis - Date.parse('HH:mm:ss', '00:00:00').time)/1000 == 990
}

看看下面这个小动物。Groovy和一些计算。不幸的是,它看起来并不聪明;)

从持续时间到秒:

long seconds = ( Date.parse( 'HH:mm:ss', '00:16:30' ).time - 
                 Date.parse( 'HH:mm:ss', '00:00:00' ).time ) / 1000

我不太熟悉
assert
如何将此计算存储回变量?更新答案。将时间戳转换为秒的第二种方法可以移动到一种使其更干燥的方法。我只是想展示一下要点。我几乎没有深入到这门语言中去,在这一点上保持干爽是我无法理解的。hahahaused Groovy
assert
显示expected==actual。没问题,慢慢来,保持Groovy状态这可以通过使用
稍微优化一下
Calendar.instance.with{clear();set(Calendar.SECOND,990);format('HH:mm:ss')}
我没有注意到它!;]谢谢你的提示!我喜欢你提供的线索!这是非常挑剔的-但是在你的
中,你不需要指定
日历.秒
或任何其他字段,只要
分钟
等。
String timestamp = 
      new GregorianCalendar( 0, 0, 0, 0, 0, 990, 0 ).time.format( 'HH:mm:ss' )
long seconds = ( Date.parse( 'HH:mm:ss', '00:16:30' ).time - 
                 Date.parse( 'HH:mm:ss', '00:00:00' ).time ) / 1000