2012-05-29 35 views
0

在我的%Y-%間 - %d%H格式具有在MySQL的時間數據:% M:%S爲UTC +0格式。 我想顯示用戶正在使用的本地計算機的時間數據調整。使用Javascript/PHP%Y-%間 - %d%H:%M:%S調整爲本地計算機時間

例如: 的數據是2012-05-29 15:00:00 那麼時間應該顯示給東部時間的用戶2012-05-29 11:00:00(應用日光節約,UTC - 4小時) 和西海岸應顯示2012-05-20 08:00:00(URC -7小時)

任何腳本轉換這? PHP或Javascript是好的。謝謝!

+0

需要JS爲此,PHP在服務器上運行,並一無所知客戶端。 – nico

+0

永遠不要相信本地電腦的時間。 –

+0

你是什麼意思,永遠不要相信本地計算機的時間? – clerksx

回答

0

存儲您所有的日期內部使用UTC,然後爲每個用戶設置:

if ($_SESSION['user_timezone']) date_default_timezone_set($_SESSION['user_timezone']); 

如果你想成爲勇敢和您的用戶基於互聯網的(而不是使用VPN最喜歡我的),你可以使用位置服務查找他們的位置。

我這個存儲每個用戶,只是讓他們選擇。

生成時區列表呈現給用戶簡單的方法:

echo '<select id="userTimezone" onChange="some_ajax_function"> 
     <option value="">Please select your Timezone</option>'; 
foreach (DateTimeZone::listIdentifiers() as $value) 
{ 
    if ($_SESSION['user_timezone'] == $value) 
    { 
     $output .= '<option value="' . $value . '" selected="selected">' . htmlentities($value) . '</option>'; 
    } 
    else 
    { 
     $output .= '<option value="' . $value . '">' . htmlentities($value) . '</option>'; 
    } 
} 
$output .= '</select>'; 
0

下面是一個使用PHP DateTime類一個簡單的例子。

$time = '2012-05-29 15:00:00'; 

$datetime = new DateTime($time, new DateTimeZone('UTC')); 
$datetime->setTimezone(new DateTimeZone('America/Los_Angeles')); 

echo $datetime->format('Y-m-d H:i:s'); // 2012-05-29 08:00:00 

Date and Time Classes

+0

這似乎不適用於我... – clerksx

+0

結果是什麼?您是否使用PHP 5.2或更高版本? – drew010

相關問題