【问题标题】:Difference between two times (without date) in PHPPHP中两次(无日期)之间的差异
【发布时间】:2014-07-20 19:28:54
【问题描述】:

我知道有很多相同类型的问题,但没有做我需要的。

我有两次以 H.MM(3.25 - 那不是 3:25,它的 3:15)或 HH.MM(22.75 - 所以它的 22:45)的形式。

我需要以小时为单位计算开始时间和结束时间之间的差异。而且我没有约会。

我的时间是(所以你可以检查):

  1. 15.25 -> 23.75
  2. 10.0 -> 22.0
  3. 22.5 -> 8.0
  4. 20.0 -> 10.0
  5. 9.0 -> 17.0
  6. 23.0 -> 6.0

我的头已经着火了。

感谢您的帮助。

【问题讨论】:

  • 您将遇到的问题是无法知道 15.25 到 18.25 是 3.0 还是 27.0,除非您不能超过最大小时数(例如,24 或更低)。此外,最简单的方法是为第一个日期填充一个日期并从中偏移。你用什么日期来做不相关的事情。
  • 您的具体问题可能需要更多限制。例如,晚上 11 点和早上 6 点之间的差异不同,当早上 6 点在第二天,而不是当天更早
  • 是的。这就是问题...改变一天。如果较大的 nr 是第二个,则有 daychange。所以 15.25 到 18.25 是 3.0 。
  • 你的意思是如果第一个数字大于第二个数字,那么第二个数字就是第二天?
  • 原来如此。还有一个问题。 24.0 与 0.0 或 24:00 = 00:00 相同。正确一:如果较小的nr是第二个*

标签: php time difference


【解决方案1】:
$times = array(
    array(15.25,23.75),
    array(10.0,22.0),
    array(22.5,8.0),
    array(20.0,10.0),
    array(9.0,17.0),
    array(23.0,6.0),
);

foreach($times as $time) {

    $end = $time[1];

    if($time[1] < $time[0]) {
        $end += 24;
    }

    $diff = $end - $time[0];
    $hours = floor($diff);
    $minutes = ($diff - $hours) * 60;

    if(strlen($minutes) < 2)
        $minutes .= '0';

    print $time[0] . ' -> ' . $time[1] 
    . " $hours:$minutes\n";
}

Demo

【讨论】:

  • 我需要稍微修改一下,但非常非常感谢。
  • 哈哈。我只需要: if($time[1]
猜你喜欢
  • 1970-01-01
  • 2011-05-16
  • 2014-04-21
  • 1970-01-01
  • 1970-01-01
  • 2011-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多