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

我对 php 非常陌生,所以我一直在尝试制作一个基本的简单应用程序,该应用程序读取 json 文件并将该数据从该文件提取到您的应用程序中。我正在尝试构建一些逻辑,它会获取某些特定日期的数据,即 72 小时内的数据。文件中的日期以“1/12/2020”格式给出。我试图以秒为单位转换 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"

    },

]

}

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


开满天机
浏览 82回答 1
1回答

月关宝盒

如果您要在 PHP 中使用 DATETIME 对象,然后使用->diff()差异方法,您可能会这样做。您还必须将日期分隔符从 转换/为-,以便 DateTime 类/函数正确地看到该日期。a/将使它们采用美国格式日期,并且这些日期不是美国格式$now = new DateTimeImmutable('now');foreach ($data['Messages'] as $msg){&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; $jd = new DateTime(str_replace('/','-', $msg['M_date']));&nbsp; &nbsp; $diff = $now->diff($jd);&nbsp; &nbsp; if ( $diff->d <= 2 ){&nbsp; &nbsp; &nbsp; &nbsp; echo $msg['id'] . ' -- ' . $jd->format('Y-m-d').PHP_EOL;&nbsp; &nbsp; }&nbsp;}
打开App,查看更多内容
随时随地看视频慕课网APP