的行为
我用 :
<?php
echo date("H:i:s", $var_time_diff);
?>
来构建两个日期之间的时间..在我的脑海中它是$var_time_diff = 36000 = 显示 10:00:00 10 小时
。
但实际上
<?php echo date("H:i:s", 0);?>
显示 01:00:00
而不是 00:00:00
。
因此
$date_a = "18:15:04";
$date_b = "23:15:04";
$diff = strtotime($date_b) - strtotime($date_a);
,目前 $diff
是 5 小时,但如果我们像这样显示日期:
echo date("H:i:s", $diff);
它将是 "06:00:00"
。
那么我的 php 配置有问题还是 php 函数日期的正常行为?
I used :
<?php
echo date("H:i:s", $var_time_diff);
?>
to construct a time between two dates.. and in my head it was$var_time_diff = 36000 = display 10:00:00 for 10 hours
.
But in fact
<?php echo date("H:i:s", 0);?>
display 01:00:00
and not 00:00:00
.
So we have
$date_a = "18:15:04";
$date_b = "23:15:04";
$diff = strtotime($date_b) - strtotime($date_a);
All is ok for the moment $diff
is 5 hours but if we display date like this:
echo date("H:i:s", $diff);
it will be "06:00:00"
.
So something wrong with my php config or it's a normal behavior for php function date?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
date()
函数使用您当前的时区。如果您想忽略配置的时区,请使用date_default_timezone_set()
或使用gmdate()
。The
date()
function uses your current time zone. If you want to ignore your configured time zone, usedate_default_timezone_set()
or usegmdate()
.您所在的时区不是 UTC。尝试:
You're in some timezone other than UTC. Try:
我不知道为什么,但是
date
在您的示例中输出当前小时,首先从秒中创建时间戳并且它可以工作。不过,我将继续关注这个问题以获得更深入的解释。编辑:啊,所以它会调整到你当前的时区,
mktime
也是如此,所以效果被否定了。I'm not sure why, but
date
outputs the current hour in your example, make a timestamp from your seconds first and it works. I'll be following this question for a deeper explanation though.edit: ah, so it adjusts to your current timezone, so does
mktime
, so the effect is negated.使用 mktime,最小 1 表示小时 @ $diff
use mktime, and min 1 for hour @ $diff