共计 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 详解,以及正负值的输出。
正文完