2013-05-12 72 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);