2016-03-07 2 views
0

Я создаю csv в Groovy и вам нужно подготовить некоторые длительности. Я использую TimeDuration для этой задачи.Groovy: Временная вычитание

Date start = Date.parse('dd.MM.yyyy hh:mm', 04.03.2016 14:30) 
Date end = Date.parse('dd.MM.yyyy hh:mm', 04.03.2016 23:30) 
TimeDuration duration = TimeCategory.minus(end, start); 
entry << "${duration.hours}:${duration.minutes}"; 

Все в порядке. Теперь я создаю продолжительность паузы:

TimeDuration pause; 

if(duration.hours >=6 && duration.hours < 8){ 
    pause = new TimeDuration(0, 0, 30, 0, 0) ; 
} else if (duration.hours >= 8) { 
    pause = new TimeDuration(0, 0, 45, 0, 0) ; 
} else { 
    pause = new TimeDuration(0, 0, 0, 0, 0) ; 
} 

entry << "${pause.hours}:${pause.minutes}"; 
entry << ";"; 

Все в порядке. Теперь я вычитаю паузу для получения реального времени наработки:

// subtract pause from duration 
TimeDuration workTime= duration.minus(pause); 
entry << "${workTime.hours}:${workTime.minutes}"; 
entry << ";"; 

Для случая я имел продолжительность 9 часов, которые 00 минут, я получаю рабочее время 9 часов и -45 минут

println entry; // 9:00;0:45;9:-45 

Я хочу получить рабочее время 8:15.

Есть ли у вас какие-либо намеки?

ответ

0

TimeDuration не предназначен для формирования. Это всего лишь класс, чтобы держать продолжительность и манипулировать этой продолжительностью.

Если вы хотите отформатировать такую ​​продолжительность, вы должны использовать метод toMilliseconds() и отформатировать его.

Например:

entry << new Date(workTime.toMilliseconds()).format("HH:mm:ss") 
+0

Спасибо за быстрый ответ. Я сделал это и получил положительные минуты, но все же часы неправильные: println entry; // 9: 00; 0: 45; 9: 15 – Tammo

+0

Не знаю, почему, я скопировал именно ваш пример и получил «08:15:00» в конце. См. Https://groovyconsole.appspot.com/script/5186766520713216 –

+0

Привет, Джереми. Ты прав. Кажется, у меня проблема с моей IDE. Я скопировал свой код в свою IDE и снова получил результат моего ответа. Я буду держать вас в курсе, что проблема. – Tammo