前言
通讯记录需要用到的一个方法,就是将秒转为时分秒
方法
PHP有内置的方法,直接用即可,不过这个只是24小时以内。对于通讯录来说是够用了~
示例
$v = 30; gmdate('H:i:s', $v); //00:00:30
如果要改成XX时XX分XX秒这种格式只要转化下就可以了,我这里直接用三元嵌套了
/** * 处理时间 * * @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小时以内的,虽然对通讯录够用了,但是对于如果下次需要一个显示天的呢?所以接下来重新写个方法。
/** * 秒转换为天,小时,分钟 * * @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; }