php中json格式数据的日期时间验证



我对php非常陌生,所以我一直在尝试制作一个基本的简单应用程序,读取json文件并从该文件将数据提取到应用程序中。我试图建立一些逻辑,它获取一些特定日期的数据,即72小时内的数据。日期在文件中以";2020年1月12日";总体安排我试图用秒来转换json日期,并用系统日期(秒(减去它,然后将差异日期(json文件中给出的系统日期数据(与72小时(秒(进行比较。但我做不到。这是我试过的

<?php
$str_data = file_get_contents("json_response.json");
$data = json_decode($str_data, true);
echo "<div class='container-fluid'>
<ul class='w3-ul w3-card-4'>";
for($i = 0; $i < sizeof($data["Messages"]); $i++) {

$id=$data["Messages"][$i]["id"];
$pnum=$data["Messages"][$i]["phonenumber"];
$body=$data["Messages"][$i]["body"];
$m_date=$data["Messages"][$i]["M_date"];
$is_read=$data["Messages"][$i]["isRead"];
$M_date_inSecs = strtotime($m_date);
$system_date_inSecs = strtotime("now") ;
$difference_time = $system_date_inSecs - $M_date_inSecs;

if($is_read=="false" && $difference_time <= strtotime("72 hours") )
echo " 
<li class='w3-bar'>
<span onclick='this.parentElement.style.display="none"'class='w3-bar-item w3-button w3-white w3-large w3-right'>×</span>
<table class='float-right text-secondary'>
<tr><td>$m_date</td></tr>
<tr><td>Read Status: $is_read</td></tr>
</table>
<img src='profile.png' class='w3-bar-item w3-circle w3-hide-small' style='width:75px'>
<div class='w3-bar-item'>
<span class='w3-large'>{$id}:{$pnum} </span><br>

<span style='max-height:60px;overflow:auto;max-width:800px;display:block;'>$body</span>
</div>
</li>";
}
echo "</ul></div>";
?>

这是示例json数据

"Messages":[
{
"id":"0",
"phonenumber":"Sannan ITU",
"body":"Manan jaldi aja lecture bhi hai is ka 1:45",
"M_date":"31/7/2020",
"isRead":"false"
},
]
}

那么我哪里做错了。任何建议都将不胜感激。

如果在PHP中使用DATETIME对象,然后使用->diff()差分方法,您可能会这样做。

您还必须将日期分隔符从/转换为-,以便DateTime类/函数正确地查看该日期。/将使它们成为一个美国格式的日期,而这些日期不是美国格式的

$now = new DateTimeImmutable('now');
foreach ($data['Messages'] as $msg){

$jd = new DateTime(str_replace('/','-', $msg['M_date']));
$diff = $now->diff($jd);
if ( $diff->d <= 2 ){
echo $msg['id'] . ' -- ' . $jd->format('Y-m-d').PHP_EOL;
} 
}

最新更新