如何相互减去日期

时间:2011-11-10 19:54:58

标签: date text groovy format relative-time-span

我正在使用Groovy。我已经解析了一个文本文件,其行包含信息,包括日期。我现在只有日期,例如:

08:13:16,121
09:32:42,102
10:43:47,153

我想比较这些值之间的增量;我怎样才能做到这一点?即,我想从第二个中减去第一个,并将该值与第三个和第二个之间的差值进行比较。我将保存最大值。

2 个答案:

答案 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