40

こんにちは、Groovy で 2 つの時間の差 (期間) を計算しようとしています。例えば

start =  "2010-10-07T22:15:33.110+01:00"
stop =   "2010-10-07T22:19:52.356+01:00"

理想的には、時間、分、秒、ミリ秒で返される期間を取得したいと思います。

誰でも助けてください。Groovy の期間クラスを使用しようとしましたが、進歩がありませんでした。

ご協力ありがとうございます。

4

3 に答える 3

70

自分で作成した 2 つの時間の差を見つけたい場合 (たとえば、何かの実行にかかる時間を確認する場合) は、次のように使用できます。

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
于 2010-10-13T18:51:37.120 に答える
25

私はそのようなことをします

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*/ }
于 2014-04-24T12:22:28.627 に答える