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";