我正在使用Groovy。我已经解析了一个文本文件,其行包含信息,包括日期。我现在只有日期,例如:
08:13:16,121
09:32:42,102
10:43:47,153
我想比较这些值之间的增量;我怎样才能做到这一点?即,我想从第二个中减去第一个,并将该值与第三个和第二个之间的差值进行比较。我将保存最大值。
答案 0 :(得分:5)
您可以使用TimeCategory将时差的方法添加到日期类:
import groovy.time.TimeCategory
use(TimeCategory) {
println date1 - date2
}
从另一个日期中减去一个日期将产生TimeDuration个对象。
答案 1 :(得分:1)
假设您的时间位于文件times.txt
中,您可以执行以下操作:
def parseDate = { str -> new Date().parse( 'H:m:s,S', str ) }
def prevDate = null
def deltas = []
use( groovy.time.TimeCategory ) {
new File( 'times.txt' ).eachLine { line ->
if( line ) {
if( !prevDate ) {
prevDate = parseDate( line )
}
else {
def nextDate = parseDate( line )
deltas << nextDate - prevDate
prevDate = nextDate
}
}
}
}
println deltas
println( deltas.max { it.toMilliseconds() } )
将打印:
[1 hours, 19 minutes, 25.981 seconds, 1 hours, 11 minutes, 5.051 seconds]
1 hours, 19 minutes, 25.981 seconds