Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.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_Datetime - Fatal编程技术网

Php 获取班次长度(两次之间的差值)

Php 获取班次长度(两次之间的差值),php,datetime,Php,Datetime,我正在开发一个应用程序,并试图计算轮班所需的时间长度。当我输入09:00 pm和6:00 am时,轮班时间设置为15:00而不是08:00。 我使用的示例代码如下: $shiftfrom = new DateTime($shiftfrom); $shiftto = new DateTime($shiftto); $hours = $shiftfrom->diff($shiftto); $hours = $hours->h.":".$hours->i; //how long a

我正在开发一个应用程序,并试图计算轮班所需的时间长度。当我输入09:00 pm和6:00 am时,轮班时间设置为15:00而不是08:00。 我使用的示例代码如下:

$shiftfrom = new DateTime($shiftfrom);
$shiftto = new DateTime($shiftto);
$hours = $shiftfrom->diff($shiftto);
$hours = $hours->h.":".$hours->i; //how long a shift is

如何解决此问题?

09:00 pm和6:00 am->9小时。我说的对吗?$date1=新日期时间'2006-04-12 21:00:00'$date2=新日期时间'2006-04-13 06:00:00';//diff方法返回一个新的DateInterval对象$diff=$date2->diff$date1;//调用DateInterval对象echo$diff->format“%h hours”上的format方法;请检查您的$shiftfrom和$shifto是否有正确的日期时间。@AlivetoDie是。这就是问题所在idea@DhananjayKyada$shiftfrom和$shiftto变量中没有日期。它们从html元素发送到php脚本。@FrankenCode确保在第二天设置$shiftto。。否则你会得到正确的结果,效果很好。非常感谢。但是,我不明白为什么需要$diff->days*24。因为$diff->days在我的情况下总是返回0。
$shiftfrom = "2019-06-24 09:00 PM";
$shiftto = "2019-06-25 06:00 AM";

$datetime1 = new DateTime($shiftfrom);
$datetime2 = new DateTime($shiftto);

$diff = $datetime1->diff($datetime2);

$hours = $diff->h;
$hours = $hours + ($diff->days*24);
$time = $diff->i;


echo $hours.":".$time;