我遇到了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
誰能告訴我如何解決它
感謝
我遇到了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
誰能告訴我如何解決它
感謝
@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/
希望這有助於。祝你好運。
你必須設置一個有效的時區 - 看來你沒有在PHP環境爲您的位置進行適當的時區。
退房
http://www.php.net/manual/en/function.date-default-timezone-set.php
它應該給你一個線索如何建立在PHP正確的時區。
@ Mujahid這可能是問題所在。您應該在將日期值存儲在MySql數據庫之前嘗試回顯日期值,如果它們匹配,那肯定是時區問題。 –
@Saad Imran:當我打印時間它只是給我同樣的答案:( – Mujahid
使MySQL服務器和Web服務器的時區設置相同。
你知道哪裏的時間不存儲在varchar字段? –
你怎麼知道時間沒有存儲在BLOB中? –
對不起,我不想和你爭吵,我想澄清一下與mysql的關係,我首先想到的是OP將PHP的時間字符串添加到數據庫中,但是隻是發現了標籤「datetime 「所以你的回答可能是正確的, –
這將增加託管服務器的時間不是本地時間 $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']));
當我運行這段代碼,我得到:2011-08-03 08 :24:27 –
當我運行它時我得到2011-08-03 04:33:02。有趣的是,時間不斷變化,在不同的時區不一樣。 –
你是否在我的後面運行它? –