2016-03-07 45 views
0

我在Groovy中创建了一个csv,需要准备一些持续时间。我正在为该任务使用TimeDuration。Groovy:Timeduration-Subtraction

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条目; // 9:00; 0:45; 9:15 – Tammo

+0

不知道为什么,我已经抄袭了你的例子,最后得到“08:15:00”。请参阅https://groovyconsole.appspot.com/script/5186766520713216 –

+0

嗨Jeremie。你是对的。看来我的IDE有问题。我将我的代码复制到我的IDE中,并再次获得我的答案的结果。我会及时更新问题所在。 – Tammo