如果你仅仅是简单的对比,可以用两个时间戳相比较,除以86400就能得到天数只差,PHP的时间戳是以s为计量单位的,所以根据实际需要进行即可。
而你如果想要定义一个函数用于对比两个日期,则可以使用PHP的date_diff。
官方手册对于这个函数的说明地址是:https://www.php.net/manual/zh/function.date-diff.php
用户笔记排名第一的是这样记录的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
owerful Function to get two date difference. ////////////////////////////////////////////////////////////////////// //PARA: Date Should In YYYY-MM-DD Format //RESULT FORMAT: // '%y Year %m Month %d Day %h Hours %i Minute %s Seconds' => 1 Year 3 Month 14 Day 11 Hours 49 Minute 36 Seconds // '%y Year %m Month %d Day' => 1 Year 3 Month 14 Days // '%m Month %d Day' => 3 Month 14 Day // '%d Day %h Hours' => 14 Day 11 Hours // '%d Day' => 14 Days // '%h Hours %i Minute %s Seconds' => 11 Hours 49 Minute 36 Seconds // '%i Minute %s Seconds' => 49 Minute 36 Seconds // '%h Hours => 11 Hours // '%a Days => 468 Days ////////////////////////////////////////////////////////////////////// function dateDifference($date_1 , $date_2 , $differenceFormat = '%a' ) { $datetime1 = date_create($date_1); $datetime2 = date_create($date_2); $interval = date_diff($datetime1, $datetime2); return $interval->format($differenceFormat); } |
上面已经很直观的对函数的定义及输出约束进行了说明,值得注意的是,date_diff对比的两个参数必须是DateTime,如果不是,则需要用上面的date_create,或者new一个DateTime。
官方给了这样的对象化实例:
1 2 3 4 5 6 |
<?php $origin = new DateTime('2009-10-11'); $target = new DateTime('2009-10-13'); $interval = $origin->diff($target); echo $interval->format('%R%a days'); ?> |
输出的结果是+2 days。
可见,date_diff是有正负之分的,日期相差运算是两个参数中的后者减去前者。
但是,如果你希望数值只差是正数时不显示+号,只需要改%R的大写R为小写r即可。
以上,就是PHP中的date_diff详解,以及正负值的输出。
原创文章,作者:蓝洛水深,如若转载,请注明出处:https://blog.lanluo.cn/10720