Car*_*ne 32 time groovy duration
嗨,我想在Groovy中计算两次之间的差异(持续时间).例如
start ="2010-10-07T22:15:33.110 + 01:00"stop ="2010-10-07T22:19:52.356 + 01:00"
理想情况下,我希望获得以小时,分钟,秒,毫秒返回的持续时间.
任何人都可以帮忙.我曾尝试使用Groovy的持续时间类但未能取得任何进展.
谢谢你的协助.
小智 58
如果你只是想找到你自己创建的两次之间的差异(例如看看要执行多长时间),你可以使用:
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
Run Code Online (Sandbox Code Playgroud)
如果您特别需要使用上面提供的日期作为字符串.试试这个,首先它们的格式有点奇怪,特别是+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
Run Code Online (Sandbox Code Playgroud)
输出
Thu Oct 07 15:15:33 MDT 2010
Thu Oct 07 15:19:52 MDT 2010
4 minutes, 19.246 seconds
Run Code Online (Sandbox Code Playgroud)
Dan*_*eDM 19
我会做那样的事情
def elapsedTime(Closure closure){
def timeStart = new Date()
closure()
def timeStop = new Date()
TimeCategory.minus(timeStop, timeStart)
}
Run Code Online (Sandbox Code Playgroud)
那么
TimeDuration timeDuration = elapsedTime { /*code you want to time*/ }
Run Code Online (Sandbox Code Playgroud)