2013-04-10 263 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)))