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



我位于(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. 谁能告诉我如何生成这种格式的日期,但没有"GMT-0700 (PDT)"部分在javascript不使用字符串函数/正则表达式?

  2. 是我的浏览器给我错误的时区,或者是php解释时区不正确。不管是哪种情况,为什么呢?

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);

演示。

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

var date = new Date();
var utcdate = date.toUTCString()
$date  = date('r', strtotime("Sat May 11 2013 20:58:51 GMT-0700 (PDT)"));

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);

相关内容

  • 没有找到相关文章