根据两个日期计算相差时间:算一下时间剩下x天y小时z分s秒,多用在倒计时

摸鱼应该是为了创造价值。

又到了搞活动的时间,无论活动预热还是活动进行到结束都需要有时间的控制,有时候需要给用户展示倒计时,自己写了个计算两个日期时间倒计时的函数:

/**
 * 算一下时间剩下x天y小时z分s秒
 * @author blog@alipay168.cn
 * @param $time1 int|string
 * @param $time2 int|string
 * @return array
 */
function cal_diff_time($time1, $time2)
{
    if (!is_numeric($time1)) {
        $time1 = strtotime($time1);
    }
    if (!is_numeric($time2)) {
        $time2 = strtotime($time2);
    }

    $diffTime = $time2 > $time1 ? $time2 - $time1 : $time1 - $time2;//距离还有x秒
    $diffDay = intval($diffTime / 86400);//天
    $diffHour = intval($diffTime % 86400 / 3600);//小时
    $diffMinute = intval($diffTime % 86400 % 3600 / 60);//分钟
    $diffSecond = $diffTime % 86400 % 3600 % 60;//秒
    $format = sprintf('%s天%s时%s分%s秒', $diffDay, $diffHour, $diffMinute, $diffSecond);
    return [
        'allSecond' => $diffTime,
        'day' => $diffDay,
        'hour' => $diffHour,
        'minute' => $diffMinute,
        'second' => $diffSecond,
        'format' => $format
    ];
}
//实例1
print_r(cal_diff_time('2020-05-31 23:59:59','2021-05-31 23:59:59'));
//返回效果
Array
(
    [allSecond] => 31536000
    [day] => 365
    [hour] => 0
    [minute] => 0
    [second] => 0
    [format] => 365天0时0分0秒
)
//实例2
print_r(cal_diff_time(time(),'2021-05-31 23:59:59'));
//返回
Array
(
    [allSecond] => 2708312
    [day] => 31
    [hour] => 8
    [minute] => 18
    [second] => 32
    [format] => 31天8时18分32秒
)

说明:

参数可以是int类型的时间戳或者完整的字符串类型;

allSecond-目前相差的秒数

day-多少天

hour-多少小时

minute-多少分钟

second-多少秒

format-字符串拼接返回剩余时间

评论/留言