【问题标题】:php to compare two lapses of time [duplicate]php比较两个时间流逝[重复]
【发布时间】:2016-08-25 02:08:56
【问题描述】:

我正在寻找一种方法来比较两个时间流逝。

如果第二次失误或部分失误在第一次失误中 -> 返回 false。 虽然,如果第一个或其中的一部分在第二个中 -> 也返回 false 。

我觉得我不必去上数学课......

我明白了

// first lapse
$a = strtotime('2016/05/04 22:50');
$b = strtotime('2016/05/20 22:15');
// second lapse
$y = strtotime('2016-05-12 12:00');
$z = strtotime('2016-05-20 10:00');

if (($y >= $a && $y <= $b) || ($z >= $a && $z <= $b)
|| ($a >= $y && $a <= $z) || ($b >= $y && $b <= $z)) 
    return false;

但它在我的大脑中很混乱。我不确定它会做它应该做的事情。 谢谢。

编辑

我发现我的问题重复了with this one

【问题讨论】:

  • 如果您不确定是否按预期进行,我们怎么知道?
  • 因为它是一个分享知识的论坛。我只是需要一些帮助......而且我想学习。
  • 计算机不是魔法,我们也不是通灵者。如果你不能描述你想要的输出,和/或获得它的过程,那么即使尝试编写代码也是没有意义的。
  • 是因为我说我在学习数学课?

标签: php datetime math compare timelapse


【解决方案1】:

如果 $a

min($b, $z) - max($a, $y)

if < 0 - no overlap    
   = 0 - common boundary point   
   > 0 - overlap

【讨论】:

  • 如果 > 0 不覆盖并且如果 > 0 覆盖?看起来很严重,但我不是很明白。请您补充一些解释好吗?
  • 谢谢。错字。简单地在纸上画一下,你就会明白——段的左边的最大值是右边的,而不是右边的最小值
  • @AdrienLeber 你了解解决方案吗?
  • 是的,我测试了这个解决方案。它似乎工作得很好。谢谢你的帮助,也谢谢你没有告诉我“blabla……电脑不是魔法……blabla……回到学校……blabla……”
  • 祝你好运!很高兴为您提供帮助
猜你喜欢
  • 2018-07-07
  • 2014-07-16
  • 1970-01-01
  • 2012-12-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-27
  • 2018-01-10
  • 2011-09-28
相关资源
最近更新 更多