2011-02-14 158 views
0

我遇到以下問題。我想在PHP中比較兩個日期時間值,但計算無效。大約有8個小時的不同。我爲我的開發機器上使用WAMPServerPHP比較日期時間

if(strtotime($date_time_from_db) < time()) 
{ 
    // do something 
} 

在數據庫中的日期時間值的格式如下:Y-M-d H:我:秒。我如何準確地做到這一點?另外,使用time()是一個好主意?如果用戶改變他們機器上的時間會發生什麼?

非常感謝!

+0

你能顯示一些實際值嗎?區別可能是時區 – 2011-02-14 19:42:41

+0

我建議在數據庫中使用時間戳,但那只是我。另外,用戶在其計算機上更改時間並不重要,因爲time()是從託管腳本的機器調用的。另一方面,如果機器的時間發生了變化,那麼就會冒着時間不匹配的風險。 – 2011-02-14 19:43:45

回答

2

如果您要從數據庫中提取這些值,請不要在PHP中進行日期/時間比較。這涉及到轉換的雙向往返:日期/時間 - >文本 - >日期 - 時間。您可以在數據庫級別做同樣的事情:

SELECT ... 
FROM table 
WHERE datetimefield < now() 

允許使用索引(好)和排除了兩個類型轉換(也不錯)。

至於用戶改變時間 - 好吧,那只是用戶的機器。除非您將其作爲銷售應用程序的一部分,否則用戶絕對不會影響數據庫服務器上的時間。