2015-05-19 51 views
1

我有CentOS,並設置爲比利時時間。PHP,CentOS 6.5 - 如何讓時間準確?

# cat /etc/redhat-release 
CentOS release 6.5 (Final) 
# php --version 
PHP 5.3.3 (cli) (built: Oct 30 2014 20:12:53) 
Copyright (c) 1997-2010 The PHP Group 
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies 
# ntpdate be.pool.ntp.org 

現在我已經從用戶來到該站點:

United States 
United Kingdom 
Japan 
Australia 
UAE 

當他們打開我的網頁,他們都看到了錯誤的時間(顯示比利時時間)

test.php的:

echo date('Y-m-d H:i:s'); 

我怎樣才能顯示他們ntpdate be.pool.ntp.org像準確的確切時間那裏的國家地帶,也自動當時間改變1小時+/-(而不是顯示默認的服務器時間)時,將其調整?

+0

在使用PHP修改時區之前,您需要能夠確定它們所處的時區。你有辦法確定嗎? –

+0

從訪客角度我可以知道他來自:美國或英國或美國阿拉伯聯合酋長國或日本或澳大利亞。 (我有那個探測器) – YumYumYum

+1

最簡單的答案是使用[DateTime objects](http://www.php.net/manual/en/datetime.settimezone.php) –

回答

1

最好的解決方法是讓應用程序以UTC工作。如果您要存儲任何日期,請將它們存儲在UTC中。這將允許您使用JavaScript從用戶時區計算本地時間。您可以使用庫像moment.js爲你做到這一點:

http://momentjs.com/timezone/

如果你只是顯示當前時間只是使用的JavaScript。

<script> 
    var date = new Date(); 
    document.getElementById("date-time").innerHTML = date.toDateString(); 
</script> 

這是最簡單的解決方案,因爲PHP不知道客戶端的時區,而JavaScript是在瀏覽器中執行的。