文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何使用 PHP 计算两个日期之间的差

2024-02-27 20:30

关注

PHP 中有几种方法可以计算两个日期之间的差。本文将介绍如何使用<5.3 以下的 PHP 版本以及较新版本>5.3 的计算日期之间差异的方法。

使用 strtotime() 计算 5.3 以下 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 >5.3 版本中使用这种方法。

例:


$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 "<br>";
// 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() 方法来获得差值的整数值,并将第二个日期作为参数传递。

最后,要获取年份,只需使用对象 y。使用 m 获取月份,使用 d 获取天数。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯