这是我的第一篇文章。我有一个我似乎无法解决的问题。它是这样的:
我有一个将事件日期打印到页面的 PHP 脚本:
$event_datetime = date("g:i A (m/d/y)", strtotime($row['event_time']));
echo $event_datetime
我想使用 Javascript 将 $event_datetime 最好转换为客户端本地时区或本地客户端计算机时间。
有任何想法吗 ?
提前致谢 !
这是我的第一篇文章。我有一个我似乎无法解决的问题。它是这样的:
我有一个将事件日期打印到页面的 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 获取它)。
请参阅在 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以使其更具动态性。
希望它可以帮助遇到我同样问题的人。