在Groovy中格式化秒整数到时间

时间:2014-07-15 16:59:47

标签: groovy

我有一个变量,包含像990这样的时间,以秒为单位,时间为16分30秒。如何在Groovy中将其转换为时间00:16:30

同样,如何以相反的方式转换它?

3 个答案:

答案 0 :(得分:2)

你走了:

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
}

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

def seconds = 990
assert sprintf '%02d:%02d:%02d', (int) (seconds / 3600), (int) (seconds % 3600 / 60), (int) (seconds % 60) == '00:16:30'