【问题标题】:Javascript/PHP %Y-%m-%d %H:%M:%S adjust for the local computer timeJavascript/PHP %Y-%m-%d %H:%M:%S 调整为本地计算机时间
【发布时间】:2023-03-13 21:55:01
【问题描述】:

我在 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 -7hour)

有任何用于转换的脚本吗? PHP 或 Javascript 都可以。谢谢!

【问题讨论】:

  • 这个需要JS,PHP运行在服务端,对客户端一无所知。
  • 永远不要相信本地计算机时间。
  • 永远不要相信本地电脑时间是什么意思???
  • @clerksx:计算机用户因设置不正确而臭名昭著,因此根本无法保证用户的系统时钟,更不用说时区设置是正确的。

标签: php javascript unix-timestamp


【解决方案1】:

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

【讨论】:

  • 结果如何?您使用的是 PHP 5.2 或更高版本吗?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2020-05-09
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 2019-01-08
    • 2016-10-15
    • 1970-01-01
    • 2019-01-28
    • 2017-11-02
    相关资源
    最近更新 更多