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

时间:2012-05-29 18:13:25

标签: php javascript unix-timestamp

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

例如: 数据是2012-05-29 15:00:00 然后应该在东部时间2012-05-29 11:00:00(应用daylightaving,UTC -4小时)向用户显示时间 并且对于westcoast应显示2012-05-20 08:00:00(URC -7hour)

任何转换此脚本的脚本?无论是PHP还是Javascript都很好。谢谢!

2 个答案:

答案 0 :(得分: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>';

答案 1 :(得分: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