Javascript/PHP %Y-%m-%d %H:%M:%S 根据本地计算机时间进行调整



我在mySQL中以%Y-%m-%d %H:%M:%S格式为UTC +0格式的时间数据。我想显示用户正在使用的本地计算机调整的时间数据。

例如:数据是 2012-05-29 15:00:00然后,应以东部时间 2012-05-29 11:00:00 向用户显示时间(应用夏令时,UTC -4 小时)而对于西海岸应显示 2012-05-20 08:00:00 (URC -7小时)

有转换这个的脚本吗?PHP或Javascript都很好。谢谢!

下面是一个使用 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

日期和时间类

使用 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>';

最新更新