segundos numero minutos horas hora formato entero dias convertir como php time

php - numero - convertir segundos a horas minutos y segundos excel



¿Convertir tiempo en formato HH: MM: SS a segundos solamente? (10)

Creo que el método más fácil sería usar la función strtotime() :

$time = ''21:30:10''; $seconds = strtotime("1970-01-01 $time UTC"); echo $seconds; // same with objects (for php5.3+) $time = ''21:30:10''; $dt = new DateTime("1970-01-01 $time", new DateTimeZone(''UTC'')); $seconds = (int)$dt->getTimestamp(); echo $seconds;

demo

La función date_parse() también se puede usar para analizar la fecha y la hora:

$time = ''21:30:10''; $parsed = date_parse($time); $seconds = $parsed[''hour''] * 3600 + $parsed[''minute''] * 60 + $parsed[''second''];

demo

Si va a analizar el formato MM:SS con strtotime() o date_parse() , fallará ( date_parse() se usa en strtotime() y DateTime ), porque cuando strtotime() formato como xx:yy analizador asume que es HH:MM y no MM:SS . Yo sugeriría que revise el formato, y anteponga 00: si solo tiene MM:SS .

demo strtotime() demo date_parse()

Si tiene horas más de 24, puede usar la siguiente función (funcionará para MM:SS y HH:MM:SS formato HH:MM:SS ):

function TimeToSec($time) { $sec = 0; foreach (array_reverse(explode('':'', $time)) as $k => $v) $sec += pow(60, $k) * $v; return $sec; }

demo

Cómo convertir la hora en formato HH:MM:SS en un número de segundos fijo?

PS Time podría ser a veces en formato MM:SS solamente.


En pseudocódigo:

split it by colon seconds = 3600 * HH + 60 * MM + SS


No hay necesidad de explode nada:

$str_time = "23:12:95"; $str_time = preg_replace("/^([/d]{1,2})/:([/d]{2})$/", "00:$1:$2", $str_time); sscanf($str_time, "%d:%d:%d", $hours, $minutes, $seconds); $time_seconds = $hours * 3600 + $minutes * 60 + $seconds;

Y si no quieres usar expresiones regulares:

$str_time = "2:50"; sscanf($str_time, "%d:%d:%d", $hours, $minutes, $seconds); $time_seconds = isset($seconds) ? $hours * 3600 + $minutes * 60 + $seconds : $hours * 60 + $minutes;


Prueba esto:

$time = "21:30:10"; $timeArr = array_reverse(explode(":", $time)); $seconds = 0; foreach ($timeArr as $key => $value) { if ($key > 2) break; $seconds += pow(60, $key) * $value; } echo $seconds;


Puede usar la función strtotime para devolver el número de segundos a partir de today 00:00:00 .

$seconds= strtotime($time) - strtotime(''00:00:00'');


Sencillo

function timeToSeconds($time) { $timeExploded = explode('':'', $time); if (isset($timeExploded[2])) { return $timeExploded[0] * 3600 + $timeExploded[1] * 60 + $timeExploded[2]; } return $timeExploded[0] * 3600 + $timeExploded[1] * 60; }


$time = 00:06:00; $timeInSeconds = strtotime($time) - strtotime(''TODAY'');


$time="12:10:05"; //your time echo strtotime("0000-00-00 $time")-strtotime("0000-00-00 00:00:00");


<?php $time = ''21:32:32''; $seconds = 0; $parts = explode('':'', $time); if (count($parts) > 2) { $seconds += $parts[0] * 3600; } $seconds += $parts[1] * 60; $seconds += $parts[2];


// HH:MM:SS or MM:SS echo substr($time , "-2"); // returns last 2 chars : SS