2015-07-13 162 views
0

我被困在試圖將Javascript格式的字符串轉換爲我可以在PHP中用於過濾的格式。將Javascript日期字符串轉換爲PHP日期

是我給出的日期字符串的一個例子是 「星期四2015年1月1日00:00:00 GMT-0800(太平洋標準時間)」

比方說,我有一個分配給一個變量$ ž。當我運行下面,我得到了意想不到的結果:

$z = "Thu Jan 01 2015 00:00:00 GMT-0800 (Pacific Standard Time)"; 
$value = date('Y-m-d H:i:s', strtotime($z)); 

這給了我$值=「1970-01-01 00:00:00」,顯然不是我想要的東西。我也試過,沒有運氣以下:

$value = DateTime::createFromFormat('D M d Y H:i:s',$z); //Fails 

現在我敢肯定的是,時區信息是什麼是搞亂了一切,但我似乎無法找出什麼在這裏做。我使用的是Laravel 5,所以我也嘗試過與Carbon進行類似的操作。有沒有人有什麼建議?

回答

2

您的代碼給出了錯誤Trailing data(使用DateTime::getLastErrors())。這是因爲你的模式沒有考慮時間之後的時區(GMT-0800 (Pacific Standard Time))。

因此,您需要使用T運算符來匹配GMT-0800部分,並使用一個通用+符號來僅剩下其餘部分。您的最終格局將是:

$value = DateTime::createFromFormat('D M d Y H:i:s T +',$z); 

這給

DateTime Object 
(
    [date] => 2015-01-01 00:00:00.000000 
    [timezone_type] => 1 
    [timezone] => -08:00 
) 

祝你好運!

+1

Wahib:感謝您的幫助!你知道,我試過格式'D M D Y H:我:S |'之前因爲我認爲管道符號會做+的。顯然不是。非常感謝您的幫助! – ChemProfMatt