2013-04-10 280 views
-2

为什么下面的代码的输出是负数?错误的时差

代码:

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

以上代码的输出是-17295

谢谢!

+2

是不是'$日期> $ now'? – Zbigniew 2013-04-10 16:47:00

回答

1

我想你会得到否定答案,因为时间2013-04-10 21:31:30,你正在分配给$date PHP变量是印度标准时间

您的服务器的时区可能不亚洲/加尔各答。所以你需要设置使用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; 
?> 
+0

非常感谢... – 2013-04-10 17:03:42

+0

@Harikrishnan :) :) – 2013-04-10 17:04:35

1

因为你减去一些小($date

但是,这也可能是因为你还没有设置时区或者没有在PHP中正确设置,如果$now真的大于更大的东西(strtotime("2013-04-10 21:31:30")$date

+0

谢谢,这将是理由。 – 2013-04-10 16:53:47

1

因为$日期的时间戳是在未来,因此$现在不到它,从而产生负数

0

如果我们1365612708秒从1970年1月1日,并在今晚21点三十一分30秒是从1970年1月1日秒当您从指定的时间,现在(1365612708)减去今晚(1365625890)你-13182秒(其中3.6小时(又名3小时30分钟(在未来ISH)))