前言
通讯记录需要用到的一个方法,就是将秒转为时分秒
方法
PHP有内置的方法,直接用即可,不过这个只是24小时以内。对于通讯录来说是够用了~
示例
代码语言:javascript复制$v = 30;
gmdate('H:i:s', $v); //00:00:30
如果要改成XX时XX分XX秒这种格式只要转化下就可以了,我这里直接用三元嵌套了
代码语言:javascript复制/**
* 处理时间
*
* @param string $s 转化好的时间
*
* @return string $ftime 处理好的时间
*/
public function ftime($s)
{
$time = explode(':', $s);
$time['0'] == '00' ? $h = 0 : $h = $time['0'];
$time['1'] == '00' ? $m = 0 : $m = $time['1'];
$time['2'] == '00' ? $s = 0 : $s = $time['2'];
$ftime = (
empty($h) ? (
empty($m) ? $s .'秒' : (
empty($s) ? $m . '分' : $m . '分' . $s .'秒'
)
) :(
empty($m) && empty($s) ? $h .'小时' : (
empty($m) ? $h . '时' . $s . '秒' : (
empty($s) ? $h . '小时' . $m . '分' : $h . '小时' . $m . '分' .$s . '秒'
)
)
)
);
return $ftime;
}
效果图
但是这个只是24小时以内的,虽然对通讯录够用了,但是对于如果下次需要一个显示天的呢?所以接下来重新写个方法。
代码语言:javascript复制/**
* 秒转换为天,小时,分钟
*
* @param int $second 时间戳
*
* @return string
*/
function secondChanage($second = 0)
{
$newtime = '';
$d = floor($second / (3600*24));
$h = floor(($second % (3600*24)) / 3600);
$m = floor((($second % (3600*24)) % 3600) / 60);
$s = $second - ($d*24*3600) - ($h*3600) - ($m*60);
empty($d) ?
$newtime = (
empty($h) ? (
empty($m) ? $s . '秒' : (
empty($s) ? $m.'分' : $m.'分'.$s.'秒'
)
) : (
empty($m) && empty($s) ? $h . '时' : (
empty($m) ? $h . '时' . $s . '秒' : (
empty($s) ? $h . '时' . $m . '分' : $h . '时' . $m . '分' . $s . '秒'
)
)
)
) : $newtime = (
empty($h) && empty($m) && empty($s) ? $d . '天' : (
empty($h) && empty($m) ? $d . '天' . $s .'秒' : (
empty($h) && empty($s) ? $d . '天' . $m .'分' : (
empty($m) && empty($s) ? $d . '天' .$h . '时' : (
empty($h) ? $d . '天' .$m . '分' . $s .'秒' : (
empty($m) ? $d . '天' .$h . '时' . $s .'秒' : (
empty($s) ? $d . '天' .$h . '时' . $m .'分' : $d . '天' .$h . '时' . $m .'分' . $s . '秒'
)
)
)
)
)
)
);
return $newtime;
}