Я создаю 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.
Есть ли у вас какие-либо намеки?
Спасибо за быстрый ответ. Я сделал это и получил положительные минуты, но все же часы неправильные: println entry; // 9: 00; 0: 45; 9: 15 – Tammo
Не знаю, почему, я скопировал именно ваш пример и получил «08:15:00» в конце. См. Https://groovyconsole.appspot.com/script/5186766520713216 –
Привет, Джереми. Ты прав. Кажется, у меня проблема с моей IDE. Я скопировал свой код в свою IDE и снова получил результат моего ответа. Я буду держать вас в курсе, что проблема. – Tammo