2012-05-11 82 views
1

我使用PHP和MySQL。當我在本地主機上的mysql數據庫中插入時間值時,將應用正確的時間。我正在使用now()函數。爲什麼PHP的時區是上傳到服務器後,本地主機上正確,但不正確的?

當我在my-hosting帳戶的my_sql數據庫中插入時間值時,它顯示錯誤的時區。

如果來自不同時區的用戶發佈了某些內容,並且正在我的時區中查看該內容,我該如何設置它,以便向用戶顯示的時間與用戶查看它的時間有關。

$sql1="INSERT INTO notifications (stamp) 
      VALUES (now()); 
+0

查看您的php.ini,您可以設置服務器的時區。 –

+0

服務器在不同的時區! – Zuul

+0

a)服務器的時區設置爲? b)什麼時區在php.ini中設置? c)在mysql中設置了哪些時區? – GordonM

回答

6

您的服務器位於不同的時區。

您可以在PHP和MySQL中設置時區。

date_default_timezone_set('America/Los_Angeles'); 

而且在MySQL:

SET time_zone = 'America/Los_Angeles'; 

或者,您可以將時間存儲爲timestamp列,它總是在底層數據UTC。

2

在你的PHP文件中更改它從the documentation for NOW()

值在當前時區表示。

所以,如果本地計算機是在不同的時區到主機的機器,你會看到不同的結果。

您可能需要考慮使用UTC_TIMESTAMP()來代替。 (如果在適當的環境下使用,這個值是否會返回DATETIME值,但這可能是您想要的值。)

+0

如果從不同的時區發佈了一些用戶,而另一個用戶在不同的時區查看它,我怎麼可以設置它,以便向用戶顯示的時間是相對於在用戶觀看它。將使用UTC_TIMESTAMP()來做到這一點?他們無論如何不強迫用戶輸入他們所在的時區? – arboles

+0

@arboles:目前尚不清楚你想要達到的目標。你應該寫下具體的例子,具體的時間和時區,然後研究如何實現它。 –

相關問題