초를 시간 형식으로 변환하는 방법은 무엇입니까?
이 질문에 이미 답변이 있습니다.
- 초를시 : 분 : 초로 변환 24 답변
어떤 이유로 나는 다음과 같은 시간 형식을 변환합니다 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?
$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)
시간이 1 시간 미만이라는 것을 알고 있다면 date()
또는 $date->format()
함수를 사용할 수 있습니다.
$minsandsecs = date('i:s',$numberofsecs);
이는 시스템 신기원 시간이 자정 (1970 년 1 월 1 일)에 시작되기 때문에 작동하지만 이는 중요하지 않습니다.
1 시간 이상 1 일 미만인 경우`를 사용하여 hours : mins : secs 형식으로 출력 할 수 있습니다.
$hoursminsandsecs = date('H:i:s',$numberofsecs);
하루 이상 동안 모듈러스를 사용하여 일 수를 계산해야합니다.이 시점에서 에포크의 시작 날짜가 관련되기 때문입니다.
도움이되기를 바랍니다.
아마도 가장 간단한 방법은 다음과 같습니다.
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
있습니다.
전달 된 초 값에 대한 일, 시간, 분 및 초를 제공하는 또 다른 솔루션 :
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);
시간이 1 년 이상이 될 것으로 예상되는 경우 '일'에 대한 추가 논리가 필요합니다. 사용 str_pad () 또는 () LTRIM / 제거 앞에 0을 추가 할 수 있습니다.
하드 코딩하려면 다른 사람들이 제안한대로 시간을 추출하기 위해 모듈러스를 사용합니다.
MySQL 데이터베이스에서 초를 반환하는 경우 앱에 초 형식의 데이터가 필요하지 않다고 가정하면 훨씬 더 깔끔한 방법이 있습니다. MySQL의 SEC_TO_TIME을 사용하면 시간이 hh : mm로 반환됩니다. ss 형식.
예 :
SELECT SEC_TO_TIME(my_seconds_field) AS my_timestring;
이 코드를 사용하여 초를 시간 : 분 : 초 와 같은 시간 형식으로 변환하려는 경우 ITroubs 응답은 남은 초를 처리하지 않습니다 .
이 문제를 해결하기 위해 내가 한 작업은 다음과 같습니다. (이것은 또한 한 자리 분과 초에 선행 0을 추가합니다)
$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"이 포함됩니다.
이 같은?
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));
}
Here is another way with leading '0' for all of them.
$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);
It is an adaptation from the answer of Flaxious.
If You want nice format like: 0:00:00 use str_pad() as @Gardner.
1 day = 86400000 milliseconds.
DecodeTime(milliseconds/86400000,hr,min,sec,msec)
Ups! I was thinking in delphi, there must be something similar in all languages.
ReferenceURL : https://stackoverflow.com/questions/3856293/how-to-convert-seconds-to-time-format
'programing' 카테고리의 다른 글
phpmyadmin.pma_table_uiprefs가 존재하지 않습니다. (0) | 2020.12.26 |
---|---|
자연어와 가장 유사한 프로그래밍 언어는 무엇입니까? (0) | 2020.12.26 |
가장 유용한 .NET 유틸리티 클래스 개발자는 재사용보다는 재발 명하는 경향이 있습니다. (0) | 2020.12.26 |
자바 스크립트의 QR 코드 생성 라이브러리 (0) | 2020.12.25 |
AngularJS 태그 속성 (0) | 2020.12.25 |