Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.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,我有一个简单的函数来减去时间:输入值是: $current = '23:48:32'; $arrival = '23:41:48'; $time = date( "H:i:s", strtotime($current) - strtotime($arrival)); $waitingTime = $time; // 21:06:44 看起来分钟数的差异是正确的,我不确定为什么我会在分钟数前得到21分。它应该是00:06:44。 感谢您的帮助。 谢谢。尝试使用gmdate() 尝试使用gmda

我有一个简单的函数来减去时间:输入值是:

$current = '23:48:32';
$arrival = '23:41:48';

$time = date( "H:i:s", strtotime($current) - strtotime($arrival));
$waitingTime = $time; // 21:06:44
看起来分钟数的差异是正确的,我不确定为什么我会在分钟数前得到21分。它应该是
00:06:44
。 感谢您的帮助。 谢谢。

尝试使用
gmdate()

尝试使用
gmdate()

这就是为什么PHP具有&s:

这就是为什么PHP具有&s:


你不能期望这段代码给你一个间隔

strotime($current)-strotime($arrival)
行以秒为单位计算一个时间间隔,但当您将它传递到
date
时,它假定您所说的时间间隔是从纪元开始的。因此,您可以得到
$time
的时区转换值;您一定得到了9分,因为您可能落后于
UTC


使用
strotime($current)-strotime($arrival)/3600表示小时,余数除以60表示分钟。然后几秒钟

你不能指望这段代码给你一个间隔

strotime($current)-strotime($arrival)
行以秒为单位计算一个时间间隔,但当您将它传递到
date
时,它假定您所说的时间间隔是从纪元开始的。因此,您可以得到
$time
的时区转换值;您一定得到了9分,因为您可能落后于
UTC


使用
strotime($current)-strotime($arrival)/3600表示小时,余数除以60表示分钟。然后是秒

这个代码回音
00:06:44

$current='23:48:32';
$arrival='23:41:48';

$time = date( "H:i:s", strtotime($current) - strtotime($arrival));
echo $time;//00:06:44

您到底有什么问题?

此代码回音
00:06:44

$current='23:48:32';
$arrival='23:41:48';

$time = date( "H:i:s", strtotime($current) - strtotime($arrival));
echo $time;//00:06:44


您到底有什么问题?

在将$time设置为调用日期函数的结果后,为什么在最后一行中使用$waitingTime?请检查我的更正。我做不到。而且你的“纠正”也没有意义。要给出它背后的逻辑吗?我不建议使用
date
函数来检索时间差。只需减去这两个日期,就可以得到秒差。然后用一些简单的除法来确定日期逻辑是我得到到达时间,然后我想从当前时间的子域中找出这个人等待了多少分钟。计算医生办公室等待时间的简单方法。在将$time设置为调用日期函数的结果后,为什么在最后一行中使用$waitingTime?请检查我的更正。我做不到。而且你的“纠正”也没有意义。要给出它背后的逻辑吗?我不建议使用
date
函数来检索时间差。只需减去这两个日期,就可以得到秒差。然后用一些简单的除法来确定日期逻辑是我得到到达时间,然后我想从当前时间的子域中找出这个人等待了多少分钟。计算出医生办公室等待时间的简单方法。tl;dr:
date()
在您的时区中起到了有益的作用,这导致了一个奇怪的小时值。tl;dr:
date()
在您的时区中进行了有益的分解,这导致了一个奇怪的小时值。我认为您的服务器使用的是GMT+0时区,因此没有问题。您尝试了
$current='23:48:32 GMT'$抵达时间:格林威治标准时间23:41:48?我认为您的服务器正在使用GMT+0时区,因此没有问题。您尝试了
$current='23:48:32 GMT'$抵达时间:格林威治标准时间23:41:48?如果我想在不显示小时的情况下仅以分钟为单位获得差异,我该如何做?将
“H:i:s”
更改为
“i:s”
如果等待时间超过一小时,小时将不会显示,这是一个问题。如果等待时间从一小时算起,我想用分钟来计算。@user1960170这是非常基本的,如果你不知道怎么做,你可以随时在网上搜索示例/解决方案。我会给你一个提示:使用
explode()
并做一些数学运算。如果我想只在几分钟内得到差异而不显示小时,我该怎么做?将
“H:I:s”
更改为
“I:s”
如果等待时间超过一小时,小时将不显示,这是一个问题。如果等待时间从一小时算起,我想用分钟来计算。@user1960170这是非常基本的,如果你不知道怎么做,你可以随时在网上搜索示例/解决方案。我给你一个提示:使用
explode()
并做一些数学运算。
00:06:44
$current='23:48:32';
$arrival='23:41:48';

$time = date( "H:i:s", strtotime($current) - strtotime($arrival));
echo $time;//00:06:44