2015-09-06 61 views
0

我正在一些網站(新聞門戶網站)在PHP和MySQL。當有新聞發佈時,我有最後一篇文章。我的時區和服務器時區是GMT + 2。我想從所有時區向所有客戶正確顯示時間。例如,如果消息被張貼在13:05我的時區從GMT+314:05GMT+415:05顯示,爲客戶,爲客戶,爲​​12:05,等等。怎麼做?什麼是解決方案,以及爲此目的在MySQL數據庫中存儲日期和時間的最佳方式是什麼?我也在我的網站中整合了Carbon,但是我找不到那個方法。PHP,MySQL - 如何顯示正確的時間張貼artical取決於客戶端時區

+1

使用getTimezoneOffset();' – splash58

+0

我具有低使用javascript的經驗。我可以用客戶端PC(設備)時區的javascript獲取,並將其作爲字符串值(如「歐洲/布魯塞爾」)分配給PHP變量? –

+1

不,你不能得到時區名稱,因爲他們中的許多人都有相同的時間轉換。但是你可以通過js或者將它發送到你的服務器來改變時間和改變 – splash58

回答

0

我們在我們公司做的是我們所有的時間存儲在格林威治標準時間。儘管我們在南非。然後根據用戶的位置我們將時間轉換爲正確顯示。有很多方法可以確定用戶所在的位置並轉換時間,但最簡單的方法就是詢問他們住在哪裏並存儲該信息。

0
  • 在時間戳中保留日期。
  • 爲所有客戶存儲時區。
  • 建立這樣的連接到數據庫運行查詢後:

    SET @@session.time_zone = "+02:00";

    SET @@session.time_zone = "Europe/Warsaw";

    在哪裏時區偏移或名稱存儲客戶端的價值。

  • 所有時間戳值將從定義的時區中的查詢返回。

0

儲存時像下面

date_default_timezone_set('UTC'); 

然後同時顯示的值使用任何時區js和使用AJAX發送時區服務器和存儲它獲取用戶時區的UTC時區的東西在數據庫存儲值在SESSION變量中,並在顯示日期時添加該時區。 例如 1)https://bitbucket.org/pellepim/jstimezonedetect/src

下載時區JS下面會給你時區

var tz = jstz.determine(); // Determines the time zone of the browser client 
var timezone=tz.name(); // Returns the name of the time zone eg "Europe/Berlin" 

使得Ajax調用,比如下面

$。員額( 「腳本/ set_timezone.php」 {timezone:timezone});

和set_timezone.php有代碼

session_start(); 
$_SESSION['user_timezone'] = $_POST['timezone']; 

和同時顯示顯示與JS`偏移=新日期()如下

$date = new DateTime('2012-01-23 05:00:00', new DateTimeZone('UTC')); 
$date->setTimezone(new DateTimeZone($_SESSION['user_timezone']));//This will from the session e.g Asia/Kolkata 
$time= $date->format('Y-m-d H:i:s'); 
相關問題