猿问

在foreach循环中以小时为单位获取两个日期之间的差异

我想要的是获取用户的开始日期和结束日期之间的差异。一个用户有3个日期,分别具有开始日期和结束日期。并且所有日期都来自数据库,当我尝试时我无法获得所需的结果,即从日期列表中获取日期之间的差异,例如2天,3天,4天,并且没有错误显示。


我的密码


<?php 

    $eid = $_SESSION['eid'];

    $sql = "SELECT empid,ToDate,FromDate from tblleaves where empid=:eid";


    $query = $dbh->prepare($sql);

    $query->bindParam(':eid',$eid,PDO::PARAM_STR);

    $query->execute();


    $results = $query->fetchAll(PDO::FETCH_OBJ);


    if($query->rowCount() > 0) {

        foreach($results as $result)

        {  

            $diff = date_diff($result->ToDate, $result->FromDate);

            echo $diff->format("%h Hours");

            htmlentities($result->FromDate));

        }

    }

?>

数据库:

元芳怎么了
浏览 151回答 3
3回答

互换的青春

在数据库中的日期格式是错误的,你必须修复,首先通过更换/带有-如。str_replace('/', '-', $result->ToDate))那么您必须将日期转换为正确的格式,例如Y-m-d,之后您可以检查差异,这是适合您的解决方案$to = date('Y-m-d', strtotime(str_replace('/', '-', $result->ToDate)));$from = date('Y-m-d', strtotime(str_replace('/', '-', $result->FromDate)));$datediff = strtotime($to) - strtotime($from);echo abs(round($datediff / (60 * 60 * 24)));如果您想要小时数的不同,可以尝试以下代码$hourdiff = abs(round(($datediff)/3600, 1));我希望这能帮到您

慕容708150

我最终得到了这段代码,这肯定可以帮助其他人。$eid=$_SESSION['eid'];$sql = "SELECT empid,ToDate,FromDate from tblleaves where empid=:eid";$query = $dbh->prepare($sql);$query->bindParam(':eid',$eid,PDO::PARAM_STR);$query->execute();$results=$query->fetchAll(PDO::FETCH_OBJ);if($query->rowCount() > 0){foreach($results as $result){&nbsp;&nbsp; &nbsp; $to = date('Y-m-d', strtotime(str_replace('/', '-', $result->ToDate)));&nbsp; &nbsp; $from = date('Y-m-d', strtotime(str_replace('/', '-', $result->FromDate)));&nbsp; &nbsp; $hours = round(abs(strtotime($from) - strtotime($to))/60/60).'<br>';&nbsp; &nbsp; $sum+=$hours;}echo '<h5>'.$sum.' Hours '.'</h5>';}?>
随时随地看视频慕课网APP
我要回答