Groovy:Timeduration-Subtraction

时间:2016-03-07 13:40:29

标签: date groovy subtraction

我在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的工作时间。

有没有人提示?

1 个答案:

答案 0 :(得分:0)

TimeDuration不打算格式化。它只是一个持有持续时间并操纵这段时间的课程。

如果要格式化此类持续时间,则应使用toMilliseconds()方法并对其进行格式化。

例如:

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