将json日期转换为PHP时出错(m/d/Y)

将json日期转换为PHP时出错(m/d/Y),php,json,Php,Json,我正在尝试将JSON字符串转换为PHP的DOB,它可以工作,但给出了错误的DOB $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); 杰森说的是: "BirthDt":"\/Date(-3880944000

我正在尝试将JSON字符串转换为PHP的DOB,它可以工作,但给出了错误的DOB

$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);
杰森说的是:

"BirthDt":"\/Date(-388094400000)\/"
在PHP中,我得到的是:1982年4月19日,而不是1957年9月14日


有什么想法吗?

您的正则表达式正在删除负号,因此它将成为unix时代(1970年1月1日)之后的日期,而不是之前的日期。试着这样做:

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

您可以看到它在工作。

手动计算,1982年4月19日确实是该时间戳所代表的日期。@nickb:快速提问,有一个DOB一直失败,不知道为什么。json输出是:
“BirthDt”:“\/Date(1036080000)\/”
因此它应该与1973年4月14日相同,但PHP显示的是1973年4月13日之前的1天???@nickb-hi。。那是时区。我现在改成GMT和wotks。很抱歉给您添麻烦,谢谢!