How to convert seconds to time format?
由于某种原因,我转换时间格式,如:
我的尝试:
1 2 3 |
现在,分钟呢?
考虑值可以像
我想你得到了照片。
顺便说一句,如何转换
这可能更简单
<5233>
PHP gmdate
1 2 3 |
如果你想获得时间格式:
1 |
如果你知道时间不到一个小时,你可以使用
1 |
这是因为系统纪元时间从午夜开始(1970年1月1日,但这对你来说并不重要)。
如果它是一个小时或更长但不到一天,你可以输出几小时:分钟:秒格式与`
1 |
超过一天,您将需要使用模数来计算天数,因为这是该时期的开始日期将变得相关的地方。
希望有所帮助。
也许最简单的方法是:
1 |
设
1 2 3 4 | $seconds = $time % 60; $time = ($time - $seconds) / 60; $minutes = $time % 60; $hours = ($time - $minutes) / 60; |
现在小时,分钟和秒分别在
另一种解决方案,可以为您提供传入秒值的天,小时,分钟和秒:
1 2 3 4 5 6 7 8 9 10 |
如果预计时间超过一年,"天"将需要额外的逻辑。使用str_pad()或ltrim()添加/删除前导零。
当您想要使用此代码将秒数转换为时间格式(如小时:分钟:秒)时,ITroubs的答案不会处理剩下的秒数
以下是我处理此问题的方法:
(这也增加了前导零到一位数分钟和秒)
1 2 3 4 5 6 7 8 9 10 |
在这个例子中,$ time将包含"1:05:21"。
如果您要对其进行硬编码,则可以使用模数来提取其他人建议的时间。
如果您从MySQL数据库返回秒数,假设您不需要在应用程序中以秒格式显示数据,则可以使用更简洁的方法,可以使用MySQL的SEC_TO_TIME,它将以hh:mm返回时间: ss格式。
例如。
1 | SELECT SEC_TO_TIME(my_seconds_field) AS my_timestring; |
对不起,这太晚了,但也许有用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | function mediaTimeDeFormater($seconds) { if (!is_numeric($seconds)) throw new Exception("Invalid Parameter Type!"); $ret =""; $hours = (string )floor($seconds / 3600); $secs = (string )$seconds % 60; $mins = (string )floor(($seconds - ($hours * 3600)) / 60); if (strlen($hours) == 1) $hours ="0" . $hours; if (strlen($secs) == 1) $secs ="0" . $secs; if (strlen($mins) == 1) $mins ="0" . $mins; if ($hours == 0) $ret ="$mins:$secs"; else $ret ="$hours:$mins:$secs"; return $ret; } echo mediaTimeDeFormater(216.064000);//3:36 |
这样的事情?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | if(is_numeric($time)){ $value = array( "years" => 0,"days" => 0,"hours" => 0, "minutes" => 0,"seconds" => 0, ); if($time >= 31556926){ $value["years"] = floor($time/31556926); $time = ($time%31556926); } if($time >= 86400){ $value["days"] = floor($time/86400); $time = ($time%86400); } if($time >= 3600){ $value["hours"] = floor($time/3600); $time = ($time%3600); } if($time >= 60){ $value["minutes"] = floor($time/60); $time = ($time%60); } $value["seconds"] = floor($time); return (array) $value; |
}其他{
return(bool)FALSE;
}
抓住了:http://www.ckorp.net/sec2time.php
这是另一种方法,对所有这些引导'0'。
1 2 3 4 |
这是Flaxious答案的改编。
只是一个小例子
请求的时间以毫秒为单位
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | // ms2time( (microtime(true) - ( time() - rand(0,1000000) ) ) ); // return array function ms2time($ms){ $return = array(); // ms $return['ms'] = (int) number_format( ($ms - (int) $ms), 2, '', ''); $seconds = (int) $ms; unset($ms); if ($seconds%60 > 0){ $return['s'] = $seconds%60; } else { $return['s'] = 0; } if ( ($minutes = intval($seconds/60))){ $return['m'] = $minutes; } if (isset($return['m'])){ $return['h'] = intval($return['m'] / 60); $return['m'] = $return['m'] % 60; } if (isset($return['h'])){ $return['d'] = intval($return['h'] / 24); $return['h'] = $return['h'] % 24; } if (isset($return['d'])) $return['mo'] = intval($return['d'] / 30); foreach($return as $k=>$v){ if ($v == 0) unset($return[$k]); } return $return; } // ms2time2string( (microtime(true) - ( time() - rand(0,1000000) ) ) ); // return array function ms2time2string($ms){ $array = array( 'ms' => 'ms', 's' => 'seconds', 'm' => 'minutes', 'h' => 'hours', 'd' => 'days', 'mo' => 'month', ); if ( ( $return = ms2time($ms) ) && count($ms) > 0){ foreach($return as $key=>$data){ $return[$key] = $data .' '.$array[$key]; } } return implode("", array_reverse($return)); } |
使用模数:
1 2 | $hours = $time_in_seconds / 3600; $minutes = ($time_in_seconds / 60) % 60; |
如果你想要很好的格式,如:0:00:00使用str_pad()作为@Gardner。
1天= 86400000毫秒。
DecodeTime(毫秒/ 86400000,小时,分钟,秒,毫秒)
UPS!我在delphi中思考,所有语言都必须有类似的东西。