2010-10-11 17 views
17

Witam Próbuję obliczyć różnicę (czas trwania) między dwa razy w Groovy. na przykładGroovy czas trwania

początek = "2010-10-07T22: 15: 33,110 + 01: 00" przystanek = "2010-10-07T22: 19: 52,356 + 01: 00"

Idealnie byłoby lubię uzyskać czas trwania zwrócony w godzinach, minutach, sekundach, milisekundach.

Czy ktokolwiek może pomóc. Próbowałem używać klas czasowych Groovy, ale nie mogłem zrobić żadnego postępu.

Dzięki za pomoc.

+0

jest format masz czasy czy też konwertowanie do tego formatu ? –

Odpowiedz

41

Jeśli chcesz po prostu zobaczyć różnicę między dwoma czasami tworzonych siebie (na przykład, aby zobaczyć, jak długo coś trwa do wykonania) można użyć:

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 

Jeśli konkretnie trzeba pracować z datami dostarczony w postaci ciągu powyżej. Spróbuj tego, najpierw ich format jest nieco dziwny, w szczególności +01: 00, która jest strefą czasową, oczekiwałbym, że będzie to +0100, aby format działał. Możesz po prostu usunąć strefę czasową, którą właśnie wymieniłem.

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 

Wyjścia

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

chciałbym zrobić coś takiego

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

następnie

TimeDuration timeDuration = elapsedTime { /*code you want to time*/ } 
Powiązane problemy