2016-03-07 33 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