欢迎来到奇迪科技(深圳)有限公司,超值服务提供卓越产品!
计算两个时间戳的时间差,并且返回如下格式: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