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;
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''];
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;
}
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