2009-06-09 17 views
8

當我使用current_timestamp與MySQL,我得到了正確的時間,但是當我使用MySQL的時間和PHP時間不一樣

$mysqldate = date('Y-m-d H:i:s');

我有一個小時的延遲(例如,4獲得日期:42 PM是5:42 PM)。 我知道這兩個函數都使用服務器的本地時間 - 有人可以解釋這種差異嗎?

謝謝。

+1

你確定你的MySQL和PHP是上同一臺服務器,對吧?一些主機將MySQL放在不同的服務器上。 – ceejayoz 2009-06-09 12:38:07

回答

9

全球系統時間將通過/ etc /本地時間文件中設置,這將是要麼一個符號或副本來自/ usr/share/zoneinfo /的大多數系統上的區域文件。應用程序將使用它作爲默認值。

PHP可以在幾個不同的方式來覆蓋此:

  1. date.timezone在php.ini
  2. 設置TZ環境變量,例如putenv("TZ=US/Central");
  3. date_default_timezone_set功能(在PHP> = 5.1.0)

MySQL能夠通過連接後立即運行下面的查詢重寫此:

SET time_zone = 'US/Central' 
1

也許你的PHP服務器認爲它是在不同的時區或它使用不同的語言環境和夏令時的規則。

+0

我如何讓PHP給我服務器計算機上列出的默認服務器時間? PHP的date.timezone沒有設置 – daniel 2009-06-09 12:24:53

2

有PHP的區域設置,它需要從php.ini文件,而不是從系統時間