2011-08-03 180 views
0

我遇到了php date()函數的問題。PHP日期時間錯誤

當我在mysql數據庫中保存日期時,小時顯示比我當前時間少4小時。

我的PHP代碼如下:$add_date = date("Y-m-d H:i:s");

它保存爲

2011-08-03 7時51分26秒

數據庫的時間,但在應該顯示

2011-08-03 13:22:26

誰能告訴我如何解決它

感謝

+0

當我運行這段代碼,我得到:2011-08-03 08 :24:27 –

+1

當我運行它時我得到2011-08-03 04:33:02。有趣的是,時間不斷變化,在不同的時區不一樣。 –

+0

你是否在我的後面運行它? –

回答

2

@Mujahid如果打印時間和保存的時間相同,這可能意味着您的服務器與您的時區不在同一時區。這就是說,你必須在文件頂部手動設置PHP腳本的默認時區,或者通過顯式定義你的時區來獲取DateTime。下面的代碼:

$dateTime = new DateTime("now", new DateTimeZone('America/Los_Angeles')); 
$add_date = $dateTime->format("Y-m-d H:i:s"); 
echo $add_date; 

這裏的時區的列表,PHP支持,只要找到你的,用它代替美洲/洛杉磯

http://php.net/manual/en/timezones.php

這裏有一個關於PHP DateTime和DateTimeZone一個很好的教程...

http://ditio.net/2008/06/03/php-datetime-and-datetimezone-tutorial/

希望這有助於。祝你好運。

+0

Imran:謝謝你的回答,它的工作完美:) – Mujahid

+0

Imran:非常感謝你的回答。它的工作完美。 – Mujahid

+0

沒問題:) –

3

你必須設置一個有效的時區 - 看來你沒有在PHP環境爲您的位置進行適當的時區。

退房

http://www.php.net/manual/en/function.date-default-timezone-set.php

它應該給你一個線索如何建立在PHP正確的時區。

+0

@ Mujahid這可能是問題所在。您應該在將日期值存儲在MySql數據庫之前嘗試回顯日期值,如果它們匹配,那肯定是時區問題。 –

+0

@Saad Imran:當我打印時間它只是給我同樣的答案:( – Mujahid

0

使MySQL服務器和Web服務器的時區設置相同。

+0

你知道哪裏的時間不存儲在varchar字段? –

+0

你怎麼知道時間沒有存儲在BLOB中? –

+1

對不起,我不想和你爭吵,我想澄清一下與mysql的關係,我首先想到的是OP將PHP的時間字符串添加到數據庫中,但是隻是發現了標籤「datetime 「所以你的回答可能是正確的, –

0

這將增加託管服務器的時間不是本地時間 $add_date = date("Y-m-d H:i:s");

使用的strtotime()添加小時和分鐘

$newdate = date("Y-m-d H:i:s",strtotime('+ 5 hours 30 minutes'.$row['db_date']));