2010-10-11 28 views
17

Merhaba, Groovy'de iki kez arasındaki farkı (süre) hesaplamaya çalışıyorum. Örneğin.Groovy zaman süreleri

başlangıç ​​= "2010-10-07T22: 15: 33,110 + 01: 00" durdurma = "2010-10-07T22: 19: 52,356 + 01: 00" İdeal

alıyorum istiyorum Süre, Dakika, Dakika, Saniye, Milisaniye cinsinden döndürülür.

Lütfen yardım edin. Groovy'un süre sınıflarını kullanmaya çalıştım ama herhangi bir ilerleme kaydedemedim.

Yardımlarınız için teşekkürler.

+0

zamanları var ya biçimi bu formata dönüştürmek vermedi olduğunu

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

böyle bir şey yapsın ? –

cevap

41

sadece (yürütmek ne kadar şey alır görmek için örneğin) Kendi oluşturduğunuz iki zaman arasındaki farkı bulmak istiyorsanız şunu kullanabilirsiniz:

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 

Özellikle tarihleri ​​ile çalışmak gerekiyorsa Yukarıdaki dizge olarak verildiği gibi. Bunu deneyin, önce bunların formatı biraz tuhaf, özellikle de +01: 00, saat dilimi, formatın çalışması için +0100 olmasını beklerdim. Sadece bir değiştirme işlemini yaptığım zaman dilimini kaldırabilirsiniz.

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 

Çıkışlar

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

Ben o zaman

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