将PHP响应日期转换为客户端本地时间

Convert PHP echoed date to client local time

本文关键字:客户端 时间 转换 PHP 响应 日期      更新时间:2023-09-26

这是我的第一篇文章。我有一个问题似乎无法解决。它来了:

我有一个PHP脚本,可以将事件的日期打印到页面上:

$event_datetime = date("g:i A (m/d/y)", strtotime($row['event_time']));
echo $event_datetime

我想使用Javascript将$event_datetime转换为客户端本地时区或本地客户端计算机时间。

有什么想法吗?

提前感谢!

不要将日期回显到javascript,只需回显时间戳并使用javascripts日期对象。

var date = new Date(<?php echo strtotime($row['event_time']) * 1000); ?>);

现在,您可以使用javascripts日期对象打印出您想要的时间。像这样:

date.toLocaleDateString();
//The default output will be the users' timezone (the client where the javascript is being executed), but can be configured with the options argument

参见:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

有关javascript日期对象的更多信息

您可以使用php将所有日期转换为一个时区:

date_default_timezone_set('America/Los_Angeles');

例如:

$time = time();
$date = date(DATE_RFC822, $time);
echo $date . PHP_EOL;
date_default_timezone_set("Australia/Perth");
$date = date(DATE_RFC822, $time);
echo $date. PHP_EOL;

输出:

Mon, 19 Aug 13 18:49:40 +0000
Tue, 20 Aug 13 02:49:40 +0800

您只需要从某个地方获取客户端时区(例如,保存在数据库中的首选项或通过javascript获取)。

请参阅获取客户端';s使用JavaScript 的JavaScript时区

我得到了我想要的答案,但我感谢你们花时间提供帮助。你的解决方案很棒,但不是我需要的。好的,我是怎么得到的:

请记住$row['event_time']是保存在UTC时区数据库中的日期时间值。

while($row = $result->fetch_assoc())
{
    $s_date = new DateTime($row['event_time'],new DateTimeZone('UTC'));
    $s_date->setTimezone(new DateTimeZone('America/New_York'));
    $start_event_time = $s_date->format('g:i:s A (m/d/y)');
    echo $start_event_time;
}

您可以创建一个获取当前用户时区的附加脚本,并更改America/New_York以使其更加动态。

希望它能帮助我解决同样的问题。