2010-10-11 226 views
17

嗨我正在嘗試計算兩次Groovy之間的差異(持續時間)。例如Groovy持續時間

開始= 「2010-10-07T22:15:33.110 + 01:00」 停止= 「2010-10-07T22:19:52.356 + 01:00」

理想我希望得到持續時間以小時,分鐘,秒,毫秒返回。

任何人都可以請幫忙。我試圖使用Groovy的持續時間類,但一直未能取得任何進展。

感謝您的協助。

+0

是你有時間或格式你轉換爲這種格式? – 2010-10-11 21:04:39

回答

41

如果你只是想找到你自己創建的兩個時間之間的差異(例如看到的東西需要多長時間來執行),你可以使用:

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 

如果你特別需要的日期合作如上面提供的字符串。試試這個,首先它們的格式有些奇怪,特別是+01:00,這是時區,我預計格式的工作時它會是+0100。你可以刪除我剛剛替換的時區。

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 

輸出

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

我會做這樣的事情

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

的那麼

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