Как вычесть даты друг из друга
Я использую Groovy. Я проанализировал текстовый файл, строки которого содержат информацию, включая даты. Теперь у меня есть только даты, например:
08:13:16,121
09:32:42,102
10:43:47,153
Я хочу сравнить дельты между этими значениями; как я могу это сделать? т.е. я хочу вычесть первое из второго и сравнить это значение с разницей между третьим и вторым. Я сохраню наибольшее значение.
2 ответа
Решение
Предполагая, что ваше время в файле 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
Вы можете использовать TimeCategory, чтобы добавить методы для разницы во времени к классам дат:
import groovy.time.TimeCategory
use(TimeCategory) {
println date1 - date2
}
Вычитание одной даты из другой приведет к объекту TimeDuration.