PHP中的日期比较函数date_diff详解,date_diff是否有正负之分

83次阅读

共计 2727 个字符,预计需要花费 7 分钟才能阅读完成。

如果你仅仅是简单的对比,可以用两个时间戳相比较,除以 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 详解,以及正负值的输出。

正文完
 0