我在Groovy中创建一个csv,需要准备一些持续时间。我正在使用TimeDuration完成该任务。
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 :(得分:0)
TimeDuration
不打算格式化。它只是一个持有持续时间并操纵这段时间的课程。
如果要格式化此类持续时间,则应使用toMilliseconds()
方法并对其进行格式化。
例如:
entry << new Date(workTime.toMilliseconds()).format("HH:mm:ss")