php日期对比date_create(),date_diff()函数的使用

使用场景:2017/6/28 0:0:0 和2017/6/27 23:59:59这样的日期差别是1天


$time = time();
/**
注意事项:时间的比较会带(+-)符号,当然如果$interval->format('%a')这样的话就不带符号了,但是比较不出哪个时间早哪个时间晚
比较规则是:data_diff($day2,$day1);后面的数减去前面的数,如果后面的数比前面的大就为正数,否则为负数
*/
#date_create的比较适合这种场景,相差1秒钟就差了一天
$day1 = date_create(date('Ymd',strtotime('2017/6/28 0:0:0')));
$day2 = date_create(date('Ymd',strtotime('2017/6/27 23:59:59')));
$diff = date_diff($day2,$day1);
$diff_days = $diff->format("%R%a");
echo $diff_days;
echo "
"
; $datetime1 = date_create(date('Ymd',$time));//当前时间 $datetime2 = date_create(date('Ymd',$time-86400*20));//应还款时间 $interval = date_diff($datetime2, $datetime1); $overdue_days = $interval->format('%R%a');//已经还款但是逾期的天数 echo $overdue_days;//比较出来的时间是带正负(+-)符号的 if($overdue_days>0){ echo '$datetime1比$datetime2大:'.intval($overdue_days).'天'.PHP_EOL; }else{ echo '$datetime1比$datetime2小:'.intval($overdue_days).'天'.PHP_EOL; } $overdue_days = ($overdue_days>0)?intval($overdue_days):$overdue_days; echo $overdue_days; echo "
"
; $day1 = date_create("20170628"); $day2 = date_create("20170601"); $diff = date_diff($day2,$day1); $diff_days = $diff->format("%R%a"); echo $diff_days;

你可能感兴趣的:(php)