欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

php 获取两个日期之间相隔的年、月、日、时、分、秒

程序员文章站 2022-04-16 21:18:15
...

 在PHP中如果我们想获取两个时间日期之间相隔有多少天,多少个月,你会怎么做呢?我们先看看网友提供的一些参考:

php 获取两个日期之间相隔的年、月、日、时、分、秒以上图片仅作为列子,无意冒犯,如有侵权请联系删除

现在如果我们使用“2003-08-11”和“2008-11-06”来测试是没有问题的;但如果我们使用 “2018-02-11” 和 “2018-03-01” 来测试就会发现输出的是 1;事实上只有18天而已。
 

下面看看改进的代码:

<?php
/**
 * @param $startDateTime 开始时间
 * @param $endDateTime 结束时间
 * @return array
 */
function timeDiff($startDateTime, $endDateTime) {
    $startDateTime = new DateTime($startDateTime);
    $endDateTime = new DateTime($endDateTime);
    $interval = $startDateTime->diff($endDateTime);
    $formatMap = [
        'y' => 'year',
        'm' => 'month',
        'd' => 'day',
        'h' => 'hour',
        'i' => 'minute',
        's' => 'second',
        'days' => 'days',
    ];
    $returnData = [];
    foreach ($formatMap as $key => $val) {
        $returnData[$val] = $interval->{$key};
    }
    return $returnData;
}
?>
<?php

...
$res = timeDiff('2018-02-11', ''2018-03-01');

print_r($res);

// 已下为结果:
/**
 * Array
 * (
 *   [year] => 0     // 相差的 年 数
 *   [month] => 0    // 相差的 月 数 
 *   [day] => 18     // 相差的 天 数
 *   [hour] => 0     // 相差的 小时 数
 *   [minute] => 0   // 相差的 分钟 数  
 *   [second] => 0   // 相差的 秒 数 
 *   [days] => 18    // 相差总的天数
 *  )
 **/   
// 计算总的月份
$res['year'] * 12 + $res['month'];


参考链接:http://php.net/manual/en/datetime.diff.php

 

相关标签: PHP 时间差