我有一个变量,包含像990
这样的时间,以秒为单位,时间为16分30秒。如何在Groovy中将其转换为时间00:16:30
?
同样,如何以相反的方式转换它?
答案 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'