首页 > 解决方案 > 几个日期时间范围之间的实际花费时间

问题描述

我有很多具有这些值的记录:

id      start              end
1       2019-01-01 08:00   2019-01-01 09:00
2       2019-01-01 08:30   2019-01-01 09:15
3       2019-01-02 19:00   2019-01-02 19:15
...

前 3 条记录的实际花费时间为 90m。

如果范围日期时间相交,我可以通过计算最小和最大时间轻松计算实际花费的时间。

但是,如果记录可以相交而不相交,如何轻松计算实际花费的时间?

标签: python-3.x

解决方案


我认为一个很好的解决方案是这个 stackoverflow 答案:https ://stackoverflow.com/a/18746503/12845160

例子:

date_ranges = [
('2020-01-10 14:39:05', '2020-01-10 14:47:45'), 
('2020-01-10 14:11:27', '2020-01-10 14:39:05'), 
('2020-01-10 14:11:09', '2020-01-10 14:47:45'), 
('2020-01-10 12:44:41', '2020-01-10 13:00:55'), 
('2020-01-10 12:44:33', '2020-01-10 13:51:50'),
]

解决方案是:

>>> list(group(date_ranges))
[
('2020-01-10 12:44:33', '2020-01-10 13:51:50'), 
('2020-01-10 14:11:09', '2020-01-10 14:47:45'),
]

给定日期范围的最大间隔的联合。

谢谢@falsetru


推荐阅读