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