2010-10-11 20 views
17

Ciao Sto cercando di calcolare la differenza (durata) tra due volte in Groovy. per esempio.Durata intervallo di tempo

start = "2010-10-07T22: 15: 33,110 + 01: 00" fermata = "2010-10-07T22: 19: 52,356 + 01: 00"

Idealmente vorrei che la otteniate durata restituita in ore, minuti, secondi, millisecondi.

Qualcuno può aiutare. Ho provato ad usare le lezioni di durata di Groovy ma non sono stato in grado di fare progressi.

Grazie per l'assistenza.

+0

è il formato che hai i tempi o hai convertire in questo formato ? –

risposta

41

Se si desidera solo per trovare la differenza tra due volte creato da voi (ad esempio per vedere come qualcosa di lungo necessario per eseguire) si può utilizzare:

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 

Se specificamente bisogno di lavorare con le date come fornito come stringa sopra. Prova questo, in primo luogo il formato di loro è un po 'strano, in particolare il +01: 00, che è il fuso orario, mi aspetto che sia di +0100 per il formato di lavoro. Potresti semplicemente rimuovere il fuso orario che ho appena sostituito.

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 

uscite

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

vorrei fare qualcosa di simile

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

uno poi

TimeDuration timeDuration = elapsedTime { /*code you want to time*/ } 
Problemi correlati