使用 PHP 计算两个日期之间的差异
将strtotime()
两个日期转换为 UNIX 时间并计算它们的秒数。由此,可以更容易地使用秒来计算不同的方法。该函数接受一个英文字符串参数,该参数显示日期时间的描述。
例子:
$firstDate = "2019-01-01";
$secondDate = "2020-03-04";
$dateDifference = abs(strtotime($secondDate) - strtotime($firstDate));
$years = floor($dateDifference / (365 * 60 * 60 * 24));
$months = floor(($dateDifference - $years * 365 * 60 * 60 * 24) / (30 * 60 * 60 * 24));
$days = floor(($dateDifference - $years * 365 * 60 * 60 * 24 - $months * 30 * 60 * 60 *24) / (60 * 60 * 24));
echo $years." year, ".$months." months and ".$days." days";
//output: 1 year, 2 months and 3 days
上面的示例使用多个函数(例如abs()
,floor()
主要是strtotime()
.
获取strtotime()
日期的 UNIX 秒值并用于abs()
获取第一个日期的绝对值。
该函数floor()
用于将秒四舍五入到最接近的整数。
要获得年份,请将 365 天乘以 60 分钟、60 秒和 24 小时,然后除以差值。
要获得月份,请将 30 天乘以 60 分钟、60 秒和 24 小时,然后除以日期差乘以年份与 365 天、60 分钟、60 秒和 24 小时的差值。
然后,要得到日差,请乘以 60 分钟、60 秒和 24 小时,然后除以日期差、年、365 天、60 分钟、60 秒和 24 小时的乘积与月、30 天的乘积的差、 60 分 60 秒和 24 小时。
最后,将它们放在一个变量中以打印最终的差异。
PHP 5.3 及以上版本的使用DateTime()
和DateInterval()
对象
此方法是一种面向对象的风格,用于获取两个日期之间的差异,这也是最简单的,因为它不需要手动计算日期,并且推荐使用,因为它来自最新版本的 PHP。
例子:
$firstDate = new DateTime("2019-01-01");
$secondDate = new DateTime("2020-03-04");
$intvl = $firstDate->diff($secondDate);
echo $intvl->y . " year, " . $intvl->m." months and ".$intvl->d." day";
echo "\n";
// Total amount of days
echo $intvl->days . " days ";
//output: 1 year, 2 months and 1 day
// 428 days
在上面的示例中,strtotime()
与使用更多其他函数和计算不同,DateTime()
对象DateInterval()
使其变得更加容易。
首先,使用 声明日期new DateTime()
。DateInterval()
然后,使用第一个日期的对象获取差值的整数值diff()
,并将第二个日期作为参数传递。
最后,得到year
刚刚使用的对象y
。用于m
获取月份和d
日期。
THE END
0
二维码
海报
使用 PHP 计算两个日期之间的差异
将strtotime()两个日期转换为 UNIX 时间并计算它们的秒数。由此,可以更容易地使用秒来计算不同的方法。该函数接受一个英文字符串参数,该参数显示日期时间的描述。