【发布时间】:2016-01-21 02:57:39
【问题描述】:
我刚刚问了这个问题,它被标记为已经回答,但是这样做的人显然不理解这个问题。
此帖子被标记为与此重复的问题,
但它们甚至完全不一样。
我正在寻找两个 DatePeriods 中的重叠时间量,而不是两个日期之间的差异。
“DatePeriod”由两个日期组成,我正在寻找两个 DatePeriod 之间的重叠量。
我发现另一个帖子在这里回答了我的一半问题,
它工作得很好,但它没有给我两个日期范围之间的时间重叠量。它只确定它们是否重叠。我需要知道它们重叠的分钟数。所以这是我最初的问题......
我认为有一个非常简单的方法可以做到这一点,但我已经查看了所有内容,但找不到解决方案。逻辑很简单:给定两个 DatePeriod,求重叠分钟数。
例如,
-我将$startDate1 和$endDate1 作为第一个日期范围。
-我将$startDate2 和$endDate2 作为第二个日期范围。
(为了演示,格式为'Y-m-d H:i'。)
假设
$startDate1 = '2015-09-11 09:15'和$endDate1 = '2015-09-13 11:30'。假设
$startDate2 = '2015-09-13 10:45'和$endDate2 = '2015-09-14 12:00'。
我预计会有 45 分钟 重叠的结果。如何实现?
我已经看到使用两个 DateTimes 完成此操作,但这不是我想要的。
一个 datePeriod 由两个 DateTimes 组成,我正在寻找两个 DatePeriods 之间的区别。
【问题讨论】:
-
重叠需要在两个方向上计算。如果 $startDate1 和 $endDate1 晚于或介于 $startDate2 和 $endDate2 之间会怎样。
-
不,它没有。就像我说的,有四个步骤。 (1) 计算较晚的开始日期;在此之前,重叠是不可能的。 (2) 计算较早的结束日期;在那之后重叠是不可能的。 (3) 从较早的结束日期减去较晚的开始日期。 (4) 检查结果。如果它是零或更大,这就是你的答案。如果它是否定的,那么你的答案是零;这意味着第二个时期直到第一个时期结束才开始。
-
我明白你的意思。谢谢你。我会尝试一下,并提供有关我是否成功的更新。