2013-05-12 77 views
1

我位于(PDT)时区时间星期六五月11 2013 20:58:51(我的时间)我使用下面的代码生成日期/时间。时区混淆处理javascript生成日期在php

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

我得到的结果

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

  1. 谁能告诉我如何生成这种格式的但不使用字符串函数/正则表达式的日期了JavaScript中的“GMT-0700(PDT)”的一部分?

  2. 是我的浏览器给我错误的时区,或者是php错误地解释时区。无论如何,为什么?

回答

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() 
+0

感谢您的响应。你的解释是引人注目的,但是当我在浏览器中运行它时,第一个代码块仍会返回意外的日期/时间“2013-05-12 03:58:51”。 – 2013-05-12 04:25:26

+0

用哪种方法? – Rikesh 2013-05-12 04:26:20

+0

嗨Rikesh,刚刚编辑。第一种方法。 – 2013-05-12 04:29:17

0
$date = date('r', strtotime("Sat May 11 2013 20:58:51 GMT-0700 (PDT)")); 
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);