这是我的第一篇文章。我有一个问题似乎无法解决。在这里:
我有一个PHP脚本,可以将事件的日期打印到页面:
$event_datetime = date("g:i A (m/d/y)", strtotime($row['event_time']));
echo $event_datetime
我想使用Javascript将$ event_datetime转换为客户端本地时区或本地客户端计算机时间。
有什么想法吗?
提前致谢!
答案 0 :(得分:5)
不要回复日期到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日期对象的更多信息
答案 1 :(得分:2)
您可以使用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获取它)。
请参阅Getting the client's timezone in JavaScript了解如何使用javascript
答案 2 :(得分:1)
我得到了我正在寻找的答案,但我感谢你们抽出时间来帮忙。你的解决方案很棒,但不是我需要的。好的,这是我得到它的方式:
请记住$ row [&#39; event_time&#39;]是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 以使其更具动态性。
希望能帮助有同样问题的人。