PHP计算两个日期相差的天数

PHP计算两个日期相差的天数,有两个方案

方案一:通过时间戳相差秒数来判断天数

把日期转成时间戳,然后把时间戳运算成天数

<?php
$start_date = "2017-02-19";
$end_date = "2017-02-22";

$start_time = strtotime($start_date);
$end_time = strtotime($end_date);
$days = abs(($start_time - $end_time) / 86400); //86400是一天的秒数

echo "时间差是:$days";
?>

缺陷:如果用于定时处理,上次同一时间执行过,今天的同一时间可能就会因为差1秒而不执行。

方案二:利用日期时间对象中的方法

<?php
$date1 = "2017-02-19";
$date2 = "2017-02-22";
 
$datetime1 = new DateTime($date1);
$datetime2 = new DateTime($date2);
$days = $datetime1->diff($datetime2)->days;

echo "时间差是:$days";
?>

这里要求比对的日期为 Y-m-d 类型,如果传入的数据是时间戳形式,需要转换一下

<?php
$date1 = "1527177600";
$date1 = date("Y-m-d", $date1);

$date2 = "1527350400";
$date2 = date("Y-m-d", $date2);
	
$datetime1 = new DateTime($date1);
$datetime2 = new DateTime($date2);
$days = $datetime1->diff($datetime2)->days;
echo "时间差是:$days";
?>

上述天数处理代码

$days = $datetime1->diff($datetime2)->days;

可以替换如下

$diff = date_diff($datetime1, $datetime2, true);
//print_r($diff);
$days = $diff->days;
echo "时间差是:$days";