2012-08-01 108 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