Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中两次(无日期)之间的差异_Php_Time_Difference - Fatal编程技术网

PHP中两次(无日期)之间的差异

PHP中两次(无日期)之间的差异,php,time,difference,Php,Time,Difference,我知道有很多类似的问题,但没有做我需要的 我有两次是以H.MM(3.25-这不是3:25,它是3:15)或HH.MM(22.75-所以它是22:45)的形式出现的 我需要以小时为单位计算开始时间和结束时间之间的差异。我没有约会 我的时间是(您可以查看): 15.25->23.75 10.0->22.0 22.5->8.0 20.0->10.0 9.0->17.0 23.0->6.0 我的头已经着火了 谢谢您的帮助。$times=array( $times = array( array(1

我知道有很多类似的问题,但没有做我需要的

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

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

我的时间是(您可以查看):

  • 15.25->23.75
  • 10.0->22.0
  • 22.5->8.0
  • 20.0->10.0
  • 9.0->17.0
  • 23.0->6.0
  • 我的头已经着火了

    谢谢您的帮助。

    $times=array(
    $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";
    }
    
    阵列(15.25,23.75), 阵列(10.0,22.0), 阵列(22.5,8.0), 阵列(20.0,10.0), 阵列(9.0,17.0), 阵列(23.0,6.0), ); foreach($倍于$时间){ $end=$time[1]; 如果($time[1]<$time[0]){ $end+=24; } $diff=$end-$time[0]; $hours=楼层($diff); $minutes=($diff-$hours)*60; 如果(strlen($minutes)<2) $minutes.='0'; 打印$time[0].->.$time[1] .“$hours:$minutes\n”; }

    您将遇到的问题是无法知道15.25到18.25是3.0还是27.0,除非您不能超过最大小时数(例如24小时或更低)。此外,最简单的方法是为第一个日期填充一个垫片,并将其偏移。你的具体问题可能需要更多的限制。例如,第二天早上6点与当天早些时候相比,晚上11点和早上6点之间的差异是不同的。是的。这就是问题所在…每天都在改变。如果较大的nr是第二个,则存在日变化。所以15.25到18.25是3.0。你的意思是如果第一个数字大于第二个数字,那么第二个数字就是第二天?就是这样。还有一个问题。24.0与0.0或24:00=00:00相同。正确的一个:如果较小的nr是第二个,我需要修改一点,但非常非常大,谢谢。哈哈。我只需要:if($time[1]<$time[0]){$end+=24;}