2011-01-12 61 views
0

好吧,我在一個MySQL文本字段中存儲日期/時間。我希望能夠檢查存儲在數據庫中的日期是否距離當前日期/時間至少48小時。下面是一些代碼:在PHP中處理日期,日期/時間戳是多少個小時?

<?php 
date_default_timezone_set("America/New_York"); 
$dtformat = "F jS, Y - g:i A"; 

$datetime = date($dtformat); 
?> 

$日期時間的值發送到MySQL,並放置在一個TEXT列,我將使用MySQL DATETIME,但時區需要是不同的,這取決於用戶的位置。所以我想我會在PHP中創建我的時間戳。一個示例輸出將是January 11th, 2011 - 6:24 PM

我將如何使用PHP中的當前日期/時間並查明我的時間戳January 11th, 2011 - 6:24 PM是否至少48小時?

感謝

+6

「好吧,我在一個MySQL文本字段,存儲日期/時間。」 - - 我的天啊。 – zerkms

+0

如果不將日期存儲爲「日期」類型或類似內容,則需要做更多工作。 – alex

回答

1
<?php 
date_default_timezone_set("America/New_York"); 
$dtformat = "F jS, Y - g:i A"; 

$datetime = date($dtformat); 

$i_datetime = strtotime($datetime); 
$i_48_hours = strtotime('now -48 hours'); 
if ($i_datetime < $i_48_hours) 
{ 
    echo "The date $datetime is older than 48 hours old."; 
} 
?> 
+0

謝謝,不得不從我的日期和時間之間的時間戳中刪除「 - 」以使其正常工作。但它!在這一點上改變數據庫會毀了我的數據 –

+1

@Mike L .:「會毀了我的數據」---好吧,再創建一個空白'timestamp'字段,並用php腳本填充它。如果你現在不改變可怕的模式 - 你將來永遠不會這樣做。 – zerkms

1

我會使用MySQL DATETIME,但時區需要是不同的,這取決於用戶的位置」

所以使用mysql timestamp日期類型,它是專爲這種特殊目的。

http://dev.mysql.com/doc/refman/5.1/en/timestamp.html

我不認爲這是任何理由繼續目前可怕的解決方案。使用timestamp更好地重寫您的代碼。

+0

我最初嘗試過這個,MySQL網站上沒有列出'SET SESSION time_zone ='可能的值,你知道這個列表嗎? –

+0

@Mike L:http://en.wikipedia.org/wiki/List_of_time_zone_abbreviations至少在這裏,但縮寫和tz的名稱,只有當管理員已經導入時區數據庫(這是非常罕見的),你可以使用。否則你可以使用'SET time_zone ='+ 10:00'' – zerkms

4

首先,您應該將數據和時間存儲在相應的timestamp字段和而不是的文本字段中。

談完... 你可以比較像這樣的日期:

if(strtotime($dateFromDatabase." + 48 hours") <= strtotime("now")) { 
    //It's at least 48 hours old, do your stuff 
} 
+0

'strtotime(「now」)'看起來有點過於複雜;-)(我暗示使用'time()相反) – zerkms

+0

是的,我也贊成你,因爲你已經對他的問題給出了正確的答案,但無論如何,我認爲幫助他做這種奇怪的事情是不對的。 – zerkms