计算时间戳时间差转年月日时分秒格式_网络编程_奇迪科技(深圳)有限公司(www.qvdv.net)

欢迎来到奇迪科技(深圳)有限公司,超值服务提供卓越产品!

网络编程

计算时间戳时间差转年月日时分秒格式

作者:admin 来源: 更新时间:2024-01-23

计算两个时间戳的时间差,并且返回如下格式:X年X个月X天X小时X分钟X秒

直接将时间相减可以吗?不可以的,因为时间戳是从1970年开始往后累计的秒数,要想得到特定格式的时间差,除了需要将两个时间戳相减外以外,还需要做时间单位的换算才能转换格式。即:将秒数都换算成年月日时分秒为单位。下面是一个计算时间差并且实现格式转换的PHP自定义函数,使用该函数可以得到特定格式的时间差:

<?php
/*
参数:$time1、$time1  要计算时间差的两个时间戳
返回:时间差,格式:X年X个月X天X小时X分钟X秒
*/
function changeTime($time1,$time2){
    $time   =  abs($time1 - $time2);
    
    $year   = floor($time / 60 / 60 / 24 / 365);
    $time  -= $year * 60 * 60 * 24 * 365;
    $month  = floor($time / 60 / 60 / 24 / 30);
    $time  -= $month * 60 * 60 * 24 * 30;
    $week   = floor($time / 60 / 60 / 24 / 7);
    $time  -= $week * 60 * 60 * 24 * 7;
    $day    = floor($time / 60 / 60 / 24);
    $time  -= $day * 60 * 60 * 24;
    $hour   = floor($time / 60 / 60);
    $time  -= $hour * 60 * 60;
    $minute = floor($time / 60);
    $time  -= $minute * 60;
    $second = $time;
    $elapse = '';
    
    $unitArr = array(
        '年'=>'year',
        '个月'=>'month',
        '周'=>'week',
        '天'=>'day',
        '小时'=>'hour',
        '分钟'=>'minute',
        '秒'=>'second'
    );
    
    foreach ( $unitArr as $cn => $u ){        
        if ( $$u > 0 ){
            $elapse .= $$u . $cn;            
        }
    }
    return $elapse;
}
?>

该函数巧妙地使用了$$可变变量,简单有效地实现了所需功能。

用法说明:该函数需要两个参数time1和time2,即要计算 时间差的时间戳,这两个时间不分先后,谁大谁小都可以。

演示实例:

<?php
$time1= 1705570577;
$time2= 1795564401;
echo getTime($time1,$time2);
?>

运行结果:2年10个月1周4天14小时17分钟4秒




本文版权所有,转载须注明:来源  https://www.qvdv.net/qvdv-oop-119.html