时区混淆处理javascript生成日期在PHP中

时间:2013-05-12 04:15:07

标签: php javascript date time timezone

我位于(PDT)时区2013年5月11日星期六20:58:51(我的时间)我使用以下代码生成了日期/时间。

var date = new Date();
alert(date);

返回结果

"Sat May 11 2013 20:58:51 GMT-0700 (PDT)"

如果我将此日期发布到php脚本,该脚本按以下方式处理它:

$date  = date('Y-m-d H:i:s', strtotime("Sat May 11 2013 20:58:51 GMT-0700 (PDT)"));

echo json_encode($date);

我得到了结果

"2013-05-12 03:58:51"

不是我的预期。如果我从我的日期/时间中删除“GMT-0700(PDT)”部分,我只能得到预期的时间。所以我有两个问题。

  1. 任何人都可以告诉我如何生成这种格式的日期但是没有使用字符串函数/正则表达式而没有使用javascript中的“GMT-0700(PDT)”部分吗?

  2. 我的浏览器是否给了我错误的时区,或者是php错误地解释了时区。在任何一种情况下,为什么?

3 个答案:

答案 0 :(得分:0)

$date  = date('r', strtotime("Sat May 11 2013 20:58:51 GMT-0700 (PDT)"));

答案 1 :(得分:0)

JavaScript始终采用本地服务器时区,而PHP将您的日期转换为UTC,因此您需要在使用strtotime之前设置服务器时区,如下所示

date_default_timezone_set('America/Los_Angeles');
$date  = date('Y-m-d H:i:s', strtotime("Sat May 11 2013 20:58:51 GMT-0700 (PDT)"));
echo json_encode($date);

<强> DEMO.

或者,如果您想将js日期转换为UTC而不是使用,

var date = new Date();
var utcdate = date.toUTCString()

答案 2 :(得分:0)

1- echo date("l F j, Y, H:i s");

2 -

date_default_timezone_set('America/Los_Angeles');
$postedDate = "Sat May 11 2013 20:36:24 GMT-0700 (PDT)";

$date  = date('Y-m-d H:i:s ', strtotime($postedDate));

echo json_encode($date);