无法使用PHP在页面上显示json中的日期时间
我从api中提取了一些JSON数据,如下所示:无法使用PHP在页面上显示json中的日期时间,php,json,date,datetime,strtotime,Php,Json,Date,Datetime,Strtotime,我从api中提取了一些JSON数据,如下所示: { data: { loans: { totalCount: 301, values: [ { name: "Anastacia", status: "fundRaising", plannedExpirationDate: "2017-08-19T22:10:06Z" }, { name: "Merc
{
data: {
loans: {
totalCount: 301,
values: [
{
name: "Anastacia",
status: "fundRaising",
plannedExpirationDate: "2017-08-19T22:10:06Z"
},
{
name: "Mercy",
status: "fundRaising",
plannedExpirationDate: "2017-08-19T22:10:05Z"
}
]
}
}
}
我可以在页面上显示姓名和总数,但不能显示plannedExpirationDate
$json_a = json_decode($curl_response, true);
//This works:
echo $json_a['data']['loans']['values'][0]['name'];
//this does not:
echo $json_a['data']['loans']['values'][0]['plannedExpirationDate'];
//this does not either. It prints a date in 1970.
$date= $json_a['data']['loans']['values'][2]['plannedExpirationDate'];
echo date('d-m-Y H:i:s', strtotime($date));
我认为您的问题在于json文件中的日期格式您有Y-m-d,您应该更改格式以与PHP代码兼容,或者根据需要在PHP中创建自己的格式查看官方文档:
我认为您的问题在于json文件中的日期格式您有Y-m-d,您应该更改格式以与PHP代码兼容,或者根据需要在PHP中创建自己的格式查看官方文档:
这门课是一个很好的替代品,它将帮助你实现你的愿望 例如 这门课是一个很好的替代品,它将帮助你实现你的愿望 例如
问题是只有两个值,因此索引#2未定义。如果您将代码更改为此,它将工作:
$date= $json_a['data']['loans']['values'][1]['plannedExpirationDate'];
1970年的日期是一条重要线索——这意味着你正在解析一个假y。问题是只有两个值,所以索引#2没有定义。如果您将代码更改为此,它将工作:
$date= $json_a['data']['loans']['values'][1]['plannedExpirationDate'];
1970年的日期是一条重要线索——这意味着你正在分析一些错误的东西。这是因为你使用了不正确的索引。
这可以在下面显示的解析JSON的var转储中清楚地看到(请注意,您想要的索引是1而不是2): 更好的方法是使用适当的索引():
您还可以使用php中可用的类为
plannedExpirationDate
设置解析值的格式,因为您使用的索引不正确。这可以在下面显示的解析JSON的var转储中清楚地看到(请注意,您想要的索引是1而不是2): 更好的方法是使用适当的索引():
您还可以使用php中可用的类来格式化
plannedExpirationDate
的解析值,这也是我的想法,但是OP说echo$json_a['data']['loans']['values'][0]['plannedExpirationDate']代码>也不起作用。我将尝试组合一个测试用例。我也是这么想的,但OP说,echo$json_a['data']['loans']['values'][0]['plannedExpirationDate']代码>也不起作用。我将尝试组合一个测试用例。很乐意提供帮助,欢迎使用Stack Overflow。如果此答案或任何其他答案解决了您的问题,请将其标记为已接受:)乐意帮助,欢迎使用Stack Overflow。如果此答案或任何其他答案解决了您的问题,请将其标记为已接受:)
array(1) {
["data"]=>
array(1) {
["loans"]=>
array(2) {
["totalCount"]=>
int(301)
["values"]=>
array(2) {
[0]=>
array(3) {
["name"]=>
string(9) "Anastacia"
["status"]=>
string(11) "fundRaising"
["plannedExpirationDate"]=>
string(20) "2017-08-19T22:10:06Z"
}
[1]=>
array(3) {
["name"]=>
string(5) "Mercy"
["status"]=>
string(11) "fundRaising"
["plannedExpirationDate"]=>
string(20) "2017-08-19T22:10:05Z"
}
}
}
}
}
<?php
$json = '{
"data": {
"loans": {
"totalCount": 301,
"values": [{
"name": "Anastacia",
"status": "fundRaising",
"plannedExpirationDate": "2017-08-19T22:10:06Z"
},
{
"name": "Mercy",
"status": "fundRaising",
"plannedExpirationDate": "2017-08-19T22:10:05Z"
}
]
}
}
}';
// to see the index more clerly we can use this
//var_dump(json_decode($json, true));
// to check for any parsing errors
switch (json_last_error()) {
case JSON_ERROR_NONE:
echo ' - No errors';
break;
case JSON_ERROR_DEPTH:
echo ' - Maximum stack depth exceeded';
break;
case JSON_ERROR_STATE_MISMATCH:
echo ' - Underflow or the modes mismatch';
break;
case JSON_ERROR_CTRL_CHAR:
echo ' - Unexpected control character found';
break;
case JSON_ERROR_SYNTAX:
echo ' - Syntax error, malformed JSON';
break;
case JSON_ERROR_UTF8:
echo ' - Malformed UTF-8 characters, possibly incorrectly encoded';
break;
default:
echo ' - Unknown error';
break;
}
echo "\n";
$json_a = json_decode($json, true);
//This works:
echo $json_a['data']['loans']['values'][0]['name'];
echo "\n";
//this does not:
echo $json_a['data']['loans']['values'][0]['plannedExpirationDate'];
echo "\n";
//this does not either. It prints a date in 1970.
$date= $json_a['data']['loans']['values'][1]['plannedExpirationDate'];
echo date('d-m-Y H:i:s', strtotime($date));
?>