我从MySQL表中循环各种日期。但距离今天不超过一年。 我想计算几天之间的天数。因此,如果它在日期之间超过5天,我想填写一个文本。 我不想每隔5行标记一次!我想在循环中的两个日期之间经过5天以上时加上标记。 像这样:
2018-01-02
2018-01-01
New period
2017-12-15
2017-12-14
2017-12-11
2017-12-08
New period
2017-12-02
New period
2017-11-16
//Fetch dates
$sql = "SELECT * FROM d_days WHERE `f_code` = 4 AND MAX A YEAR AGO ORDER BY ID DESC";
$result = $db->query($sql);
if ($result->num_rows > 0) {
// Count total days
$row_cnt = $result->num_rows;
printf("You have total %d dates.\n", $row_cnt);
while($row = $result->fetch_assoc())
{
if more than 5 days { //// ?????
echo "New period";
}
echo "<tr><td>";
echo $row['d_day'];
echo "</td></tr>";
}
} else {
echo "Did not find any dates";
}
$result->close();
我不知道如何计算日期。 DATEDIFF?如何在循环中获取日期?
d_day是datetime 0000-00-00 00:00:00
答案 0 :(得分:1)
我们可以保存当前行的日期值,在处理下一行时,我们可以计算日期之间的天数。
使用PHP 5.3及更高版本,我们可以使用diff
类的DateTime
方法返回DateInterval
类。然后使用days
方法属性获取整天的数量。
这样的事情:
$d1 = new DateTime();
while( $row = $result->fetch_assoc() ) {
// convert MySQL date string to a DateTime object
$d2 = new DateTime( $row['d_day'] );
// calculate number of whole days between
$numdays = $d1->diff($d2)->days;
if( $numdays > 5 ) {
echo "New period";
}
// ... whatever else we need to do with the row
// before we start the next iteration of the loop
// save the date from this row so we can compare it to the next row
$d1 = $d2;
}