2010-10-11 14 views
17

Hola, estoy tratando de calcular la diferencia (duración) entre dos veces en Groovy. p.ej.Duraciones de tiempo maravilloso

inicio = "2010-10-07T22: 15: 33.110 + 01: 00" parada = "2010-10-07T22: 19: 52.356 + 01: 00"

Idealmente me gustaría que el obtener el duración devuelta en horas, minutos, segundos, milisegundos.

¿Alguien puede ayudarme. Intenté usar las clases de duración de Groovy pero no he podido hacer ningún progreso.

Gracias por su ayuda.

+0

es el formato que tienes el tiempo o hizo a convertir a este formato ? –

Respuesta

41

Si lo que desea es encontrar la diferencia entre dos tiempos se crea a sí mismo (por ejemplo, para ver cómo algo largo tarda en ejecutar) se puede utilizar:

import groovy.time.* 

def timeStart = new Date() 
// Some code you want to time 
def timeStop = new Date() 
TimeDuration duration = TimeCategory.minus(timeStop, timeStart) 
println duration 

Si necesita específicamente para trabajar con las fechas como se suministra como la cadena de arriba. Pruebe esto, primero el formato es un poco extraño, en particular el +01: 00, que es la zona horaria, espero que sea +0100 para que el formato funcione. Podrías eliminar la zona horaria que acabo de reemplazar.

import groovy.time.* 

def start = Date.parse("yyy-MM-dd'T'HH:mm:ss.SSSZ","2010-10-07T22:15:33.110+01:00".replace("+01:00","+0100")) 
println start 
def end = Date.parse("yyy-MM-dd'T'HH:mm:ss.SSSZ","2010-10-07T22:19:52.356+01:00".replace("+01:00","+0100")) 
println end 
TimeDuration duration = TimeCategory.minus(end, start) 
println duration 

salidas

Thu Oct 07 15:15:33 MDT 2010 
Thu Oct 07 15:19:52 MDT 2010 
4 minutes, 19.246 seconds 
11

que haría algo así

def elapsedTime(Closure closure){ 
    def timeStart = new Date() 
    closure() 
    def timeStop = new Date() 
    TimeCategory.minus(timeStop, timeStart) 
} 

una continuación

TimeDuration timeDuration = elapsedTime { /*code you want to time*/ } 
Cuestiones relacionadas