2011-02-26 72 views
1

不知道怎麼了代碼Unix時間實時

$date = strtotime("%b %d, %Y", $datedata); 
    $time = strtotime("%I:%M:%S %p", $datedata); 

的時間,我從數據庫得到的是1298747601,是$ datedata

date_default_timezone_set('America/Los_Angeles');在腳本的頂部。

+1

http://php.net/date – 2011-02-26 19:30:08

回答

4

使用strftime()date(),而不是strtotime()。 Strtotime旨在格式化文本日期,而不是時間戳。

最好在數據庫中使用DATETIME數據類型,而不是使用包含時間戳的int。使用DATETIME意味着使用日期更容易計算,您可以直接在查詢中格式化日期。

1

strtotime()用於將字符串轉換爲像$timestamp = strtotime("1:33 PM EST Next Friday");這樣的時間。

你想date(),這需要一個格式字符串和時間戳來創建一個格式化的日期時間字符串,並使用當前時間(從time())如果沒有時間戳被傳遞,就像date("h:i:s A T, M jS, Y", $timestamp)這將輸出類似「1:33 :美國東部時間下午00時,2011年3月4日「。此外,請注意,如果您想要使用格式中的單詞,如「1月23日」,並且單詞中的字母也是日期格式化字符,則在此情況下,'of'中的'o'是ISO-8601年數字格式化選項,您必須使用像\ "jS \of F"這樣的\ slash轉義它。因爲f不是格式化選項,所以它不需要轉義,但是如果是這樣的話,那麼它就是"\o\f"

還有一個DateTime對象,內置於更新的PHP版本中,您可以查看它們。

我不同意Ray的觀點,最好在SQL中存儲DateTime數據類型,而不是整數時間戳。他們差不多。您仍然可以通過查找大於X時間戳和小於Y時間戳的數字來在數據庫中搜索日期範圍,並且作爲一個加號,您從數據庫中獲得的所有內容都已經處於時間戳格式,PHP可以輕鬆使用這些格式而不必將其轉換爲適當的時間戳。

+0

同樣在PHP中,使用日期值而不是時間戳來計算更容易。但這是一個熟悉的討論,沒有一種方法是正確的。 – Ray 2011-02-26 23:29:58