2012-08-01 63 views
1

我試圖從JSON字符串轉換爲PHP DOB,它的工作原理但給了我錯誤的DOB。將json日期轉換爲PHP時出錯(m/d/Y)

$url = "test.js"; 
$content = file_get_contents($url); 
$json = json_decode($content, true); 
$DOB = date('m/d/Y', preg_replace('/[^\d]/','', $json['Player'][BirthDt])/1000); 

得到什麼JSONJason是:

"BirthDt":"\/Date(-388094400000)\/" 

在PHP中,我得到這樣的:1982年4月19日代替1957年9月14日

任何想法?

+0

手動計算,4/19/1982實際上是由該時間戳表示的日期。 – Lusitanian 2012-08-01 14:01:14

回答

2

您的正則表達式正在消除負號,因此它成爲unix時代(1970年1月1日)之後的日期,而不是之前。嘗試這樣的:

preg_match('/Date\((-?\d+)\)/', $json['Player']['BirthDt'], $matches); 
$timestamp = $matches[1]; 
$DOB = date('m/d/Y', $timestamp/1000); 

你可以看到它在the demo工作。

+1

哇。該捕獲+1。 – Matt 2012-08-01 13:56:10

+0

非常感謝大夥 - 它的工作:) – Azukah 2012-08-01 14:03:41

+0

@nickb:快速的問題,有一個DOB,不斷失敗,不知道爲什麼。 json的輸出是:'「BirthDt」:「\/Date(103608000000)\ /」'所以它應該和04/14/1973相同,但是PHP在04/13/1973之前顯示1天呢? – Azukah 2012-08-01 14:42:45