我有很多具有这些值的记录:
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
...
前三条记录的实际花费时间为90m。
如果范围日期时间通过计算最小和最大时间相交,我很容易计算出实际花费的时间。
但是如果记录可以相交而不能相交,如何轻松地计算实际花费时间?
我认为这个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