前言
通訊記錄需要用到的一個方法,就是將秒轉為時分秒
方法
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; }