我使用date('H:i:s', (time() - $start['time']))
來顯示自腳本啓動以來傳遞的時間。PHP的日期使用結果爲2小時錯誤
任何的time() - $start['time']
結果 - 或者是0,17或任何日期打印出像02:00:00,2時○○分17秒等
可能是什麼原因?
我使用date('H:i:s', (time() - $start['time']))
來顯示自腳本啓動以來傳遞的時間。PHP的日期使用結果爲2小時錯誤
任何的time() - $start['time']
結果 - 或者是0,17或任何日期打印出像02:00:00,2時○○分17秒等
可能是什麼原因?
time
返回一個絕對值數字時間戳,比如數字值爲2012-06-04 16:35:12
。你的開始時間是一個類似的數字,絕對時間戳。從另一個減去一個將導致一個非常小的數字,這也是一個絕對的時間戳。可能在1970年左右的某個時間。當您使用date('H:i:s')
格式化時間戳時,您只顯示時間戳的時間部分,如1970-01-01 02:00:00
。
閱讀關於UNIX timestamps actually represent的內容。
您正在尋找的時差是time() - $start['time']
的結果,以秒爲單位,無法簡單使用date()
進行格式化。更多沿線:
$diff = time() - $start['time'];
echo 'Difference in seconds: ' . $diff;
echo 'Difference in minutes: ' . $diff/60;
echo 'Difference in hours: ' . $diff/60/60;
似乎你已經添加2H偏移量。
// save current TZ
$current_tz = date_default_timezone_get();
// Use universal time
date_default_timezone_set('UTC');
$t = time();
echo "T:".$t."<br/>";
sleep(2);
echo "T2: ".date('H:i:s', time() - $t);
// return correct TZ
date_default_timezone_set($current_tz);
如果我試試這個代碼不date_default_timezone_set( 'UTC'),它給了我預期值+ 1H從夏令時(GMT + 1)。如果你只需要兩次差值,你可以使用UTC,你只能得到差值OR,你可以檢查當前的時間偏移量並減去它。
希望它可以幫助
硬盤沒有你說告訴我們,你怎麼設置$啓動[「時間」] – clentfort
那麼,這是否$啓動[「時間」]從何而來?你爲什麼不簡單地使用microtime()? –
你在哪裏開始'$ start ['time']' –