如何将秒转换为时间格式?

出于某种原因,我现在将时间格式如03:30 to seconds 3*3600 + 30*60, now转换03:30 to seconds 3*3600 + 30*60, now 。 我想把它转换回它的第一个(相同)格式。 那怎么可能?

我的尝试:

 3*3600 + 30*60 = 12600 12600 / 60 = 210 / 60 = 3.5, floor(3.5) = 3 = hour 

那么,那个时间呢?

考虑到价值可以像19:00 or 02:51. 我想你已经得到了照片。

顺便说一下,如何2:0 for example to 02:00 using RegEx?2:0 for example to 02:00 using RegEx?转换2:0 for example to 02:00 using RegEx?

 $hours = floor($seconds / 3600); $mins = floor($seconds / 60 % 60); $secs = floor($seconds % 60); 

如果你想获得时间格式:

 $timeFormat = sprintf('%02d:%02d:%02d', $hours, $mins, $secs); 

这可能更简单

gmdate("H:i:s", $seconds)

PHP的gmdate

如果你知道时间不到一个小时,你可以使用date()$date->format()函数。

 $minsandsecs = date('i:s',$numberofsecs); 

这是有效的,因为系统时间从午夜开始(1970年1月1日,但这对你并不重要)。

如果是一个小时或更多,但不到一天,则可以以小时输出:mins:secs格式

 $hoursminsandsecs = date('H:i:s',$numberofsecs); 

对于一天以上,你需要使用模数来计算天数,因为这是时代的开始date将变得相关的地方。

希望有所帮助。

也许最简单的方法是:

 gmdate('H:i:s', $your_time_in_seconds); 

$time成为秒数的时间。

 $seconds = $time % 60; $time = ($time - $seconds) / 60; $minutes = $time % 60; $hours = ($time - $minutes) / 60; 

现在小时,分钟和秒分别是$hours$minutes$seconds

另一种解决scheme将为您提供传入秒数值的日,时,分和秒:

 function seconds_to_time($secs) { $dt = new DateTime('@' . $secs, new DateTimeZone('UTC')); return array('days' => $dt->format('z'), 'hours' => $dt->format('G'), 'minutes' => $dt->format('i'), 'seconds' => $dt->format('s')); } print_r(seconds_to_time($seconds_value); 

如果时间预计超过一年,则需要额外的逻辑“天”。 使用str_pad()或ltrim()添加/删除前导零。

当你想使用这段代码将秒数转换成时间格式,例如小时:分钟:秒, ITroubs的回答不会处理剩下的秒数

以下是我所做的处理:(这也增加了一个零到一位数分钟和秒)

 $seconds = 3921; //example $hours = floor($seconds / 3600); $mins = floor(($seconds - $hours*3600) / 60); $s = $seconds - ($hours*3600 + $mins*60); $mins = ($mins<10?"0".$mins:"".$mins); $s = ($s<10?"0".$s:"".$s); $time = ($hours>0?$hours.":":"").$mins.":".$s; 

在本例中$ time将包含“1:05:21”。

如果你要硬编码,你可以使用模数来提取时间。

如果您要返回MySQL数据库的秒数,假设您的应用程序中不需要秒数格式的数据,那么可以使用MySQL的SEC_TO_TIME ,它将以hh:mm返回时间: ss格式。

例如。

 SELECT SEC_TO_TIME(my_seconds_field) AS my_timestring; 

像这样的东西?

  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; 

} else {return(bool)FALSE; }

抓取: http : //www.ckorp.net/sec2time.php

对不起,这太晚了,但也许有用

 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 

使用模数:

 $hours = $time_in_seconds / 3600; $minutes = ($time_in_seconds / 60) % 60; 

只是一个小例子

请求的时间以毫秒为单位

  // 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)); } 

这是另外一种方式,它们都是领先的“0”。

 $secCount = 10000; $hours = str_pad(floor($secCount / (60*60)), 2, '0', STR_PAD_LEFT); $minutes = str_pad(floor(($secCount - $hours*60*60)/60), 2, '0', STR_PAD_LEFT); $seconds = str_pad(floor($secCount - ($hours*60*60 + $minutes*60)), 2, '0', STR_PAD_LEFT); 

这是一个适应从蓝色的答案。

如果你想格式如:0:00:00使用str_pad()作为@Gardner。

1天= 86400000毫秒。

DecodeTime(毫秒/ 86400000,小时,分钟,秒,毫秒)

UPS! 我在delphi的想法,一定有所有语言类似的东西。