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