2010-10-11 15 views
17

हाय मैं ग्रोवी में दो बार के बीच अंतर (अवधि) की गणना करने की कोशिश कर रहा हूं। जैसेग्रोवी समय अवधि

शुरू = "2010-10-07T22: 15: 33.110 + 01: 00" बंद = "2010-10-07T22: 19: 52.356 + 01: 00"

आदर्श रूप में मैं मिल चाहते हैं घंटे, मिनट, सेकेंड, मिलीसेकंड में लौटाई गई अवधि।

क्या कोई भी कृपया मदद कर सकता है। मैंने ग्रोवी की अवधि कक्षाओं का उपयोग करने की कोशिश की है लेकिन कोई प्रगति नहीं कर पाई है।

आपकी सहायता के लिए धन्यवाद।

+0

प्रारूप आप बार मिला या आप इस प्रारूप में बदलने का था है की तरह कुछ करना होगा ? –

उत्तर

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*/ }