0
我有一些作業(或任何項目/動作)及其開始和結束日期的列表。 現在每天的每一分鐘,我都需要知道有多少活動是活動的。轉換csv數據 - 連續到離散步驟
因此,輸入如下: (其實我把它直接作爲CSV)
Jobname | Start | End
---------------------------------------------------
JobA | 04/10/2015 08:00:00 | 04/10/2015 09:00:00
JobB | 04/10/2015 10:00:00 | 04/10/2015 10:00:59
JobC | 04/10/2015 10:00:00 | 04/10/2015 11:00:00
的輸出應是這樣的:
注意:Jobnames只是增加了clearity,在真正的產出我只對每分鐘活動作業的數量感興趣,而不是哪些作業是活動的
Time | Number of active jobs
---------------------------------------------------
04/10/2015 00:00:00 | 0
[..]
04/10/2015 08:00:00 | 1 (JobA)
04/10/2015 08:01:00 | 1 (JobA)
[..]
04/10/2015 09:00:00 | 1 (JobA)
04/10/2015 09:01:00 | 0
[..]
04/10/2015 09:59:00 | 0
04/10/2015 10:00:00 | 2 (JobB, JobC)
04/10/2015 10:01:00 | 1 (JobC)
[..]
04/10/2015 11:00:00 | 1 (JobC)
04/10/2015 11:01:00 | 0
[..]
04/10/2015 23:59:00 | 0
這怎麼能用Perl來實現?請注意,CPAN不可用,因此很不幸,這不是一個選項。感謝您的任何提示!
我可能會使用一個函數來將時間轉換爲秒或分鐘,而一個用於相反。已經存在於cpan中的,所以不是可能引入錯誤,而是使用它。 DateTime,Time :: Local。 然後,我會解析給出的日期,將它們的轉換後的值放在散列中,然後每分鐘從該散列中刪除結束時間過去的作業,並打印所有開始時間<=當前分鐘的作業(或者,如果作業名稱不要緊,只要grep所有的開始時間<= current並打印該數字)。 – bytepusher
如果您先嚐試自己解決問題,您將得到更好的答案。我會指出'Time :: Piece'是一個核心模塊。 – Sobrique