2011-01-22 45 views
1

嗨Stackfriends = P 我知道的時間()和日期()功能, 但我想實現的是,來自中國的用戶比來自法國的用戶獲得另一個時間顯示。 我無法使用JavaScript,因爲我也使用本地時間進行一些計算。PHP用戶當地時間

+0

Java腳本與否,你不能相信來自客戶端的數據。 – Mikk 2011-01-22 20:57:08

回答

1

有兩個很好的解決方案:

  • 詢問他的時區的用戶;根據您的大部分用戶來自和/或通過JavaScript檢測到的本地時區預先選擇一個默認地區
  • 只需在您的網站上使用UTC(GMT)即可。

顯然它很大程度上取決於您的網站哪個選項是合適的。在一個類似於stackoverflow選項2的網站上使用並且最有意義,因爲有各種各樣的以日爲基礎的事件,因此所有用戶需要同時更改這些日期。

0

一種方法是使用類似IP to City database from MaxMind的東西 - 這可以爲用戶IP地址提供一個時區。

另外,只要詢問用戶他們喜歡什麼時區,並在cookie或會話變量中記住它。

+0

這太不可靠了...... – SuperSpy 2011-01-23 14:06:28

+0

不確定爲什麼可靠性應該成爲您提到的用例的一個問題。您可以在99%的時間內通過猜測自己的時區來取悅用戶,剩下的時間讓他們調整。 – 2011-01-23 17:10:06

3

唯一令應該從使用JavaScript停止你的是如果)你只是服務的API,並有超過網頁內容沒有控制權;或者b)客戶端已經阻止了javascript。通過JavaScript是最可靠的方法,簡單地提示用戶輸入他們的時區。

Cookie或ajax將工作。對於容易cookie的方式,把這個中的JavaScript功能頭部分的任何頁面上添加一個cookie ...

<script> 

d = new Date; 
gmtoffset = d.getTimezoneOffset()/60; 
document.cookie = 'gmtoffset=' + gmtoffset; 

</script> 

然後在你的PHP腳本,閱讀$_COOKIE['gmtoffset']得到他們的時區相對於GMT。

恕我直言,客戶的時間w /時區應該已經是行業範圍的標準請求標題。

編輯:刪除「過期」從餅乾例如日期,因爲它可能1月1日以後產生的問題,2012年

+0

我用過你的代碼,在我的腳本的另一部分。謝謝! – SuperSpy 2011-01-23 14:22:07