时差不正确

时间:2013-04-10 16:45:15

标签: php time

为什么以下代码的输出为负?

代码:

$date=strtotime("2013-04-10 21:31:30");
$now=time();
$diff=$now-$date;
echo $diff;

以上代码的输出为-17295

谢谢!

4 个答案:

答案 0 :(得分:1)

因为你从较小的东西(strtotime("2013-04-10 21:31:30"))中减去更大的东西($date

但也可能是因为你没有设置时区,或者在PHP中没有正确设置,如果$now真的大于$date

答案 1 :(得分:1)

因为$ date的时间戳是将来的,所以$ now现在小于它,因此产生负数

答案 2 :(得分:1)

我认为你得到的答案是2013-04-10 21:31:30,你指定给$date PHP变量的时间是印度标准时间

您的服务器时区可能不是亚洲/加尔各答。因此,您需要将脚本中所有日期/时间功能使用的默认时区设置为 Asia / Calcutta 使用 date_default_timezone_set 功能。

这应该完美无缺: IDEONE DEMO

<?php
$date=strtotime("2013-04-10 21:31:30");
if(function_exists('date_default_timezone_set')) 
                                date_default_timezone_set("Asia/Calcutta");
$now=time();
$diff=$now-$date;
echo $diff;
?>

答案 3 :(得分:0)

如果我们从1970年1月1日开始1365612708秒,今晚21:31:30从1970年1月1日开始1365625890秒,此时您从指定时间开始减去1365612708今晚(1365625890)你将来-13182秒(即3.6小时(又名3小时30分钟(ish))