我正在使用 Groovy。我已经解析了一个文本文件,其行包含信息,包括日期。我现在只有日期,例如:
08:13:16,121
09:32:42,102
10:43:47,153
我想比较这些值之间的增量;我怎样才能做到这一点?即,我想从第二个中减去第一个,并将该值与第三个和第二个之间的差值进行比较。我将保存最大的价值。
我正在使用 Groovy。我已经解析了一个文本文件,其行包含信息,包括日期。我现在只有日期,例如:
08:13:16,121
09:32:42,102
10:43:47,153
我想比较这些值之间的增量;我怎样才能做到这一点?即,我想从第二个中减去第一个,并将该值与第三个和第二个之间的差值进行比较。我将保存最大的价值。
您可以使用TimeCategory将时差方法添加到日期类:
import groovy.time.TimeCategory
use(TimeCategory) {
println date1 - date2
}
从另一个日期中减去一个日期将产生一个TimeDuration对象。
假设您的时间在一个文件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