¿Cómo convertir la hora en el formato HH:MM:SS
en un número de segundos planos?¿Convertir tiempo en formato HH: MM: SS a segundos solamente?
P.S. El tiempo podría ser a veces en el formato MM:SS
solamente.
¿Cómo convertir la hora en el formato HH:MM:SS
en un número de segundos planos?¿Convertir tiempo en formato HH: MM: SS a segundos solamente?
P.S. El tiempo podría ser a veces en el formato MM:SS
solamente.
No hay necesidad de nada explode
:
$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 desea utilizar 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;
<?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
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;
¡Me encanta! $ time = "01: 23: 54: 21: 30: 10" me da una respuesta de 1087421410 segundos. –
Pruébalo ahora. Por supuesto, puede pasar algo como "898989: 8989898: 899899", pero supongo que las validaciones básicas se realizarán en el tiempo ingresado antes de que el código llegue al cálculo de segundos. – Chandu
$time="12:10:05"; //your time
echo strtotime("0000-00-00 $time")-strtotime("0000-00-00 00:00:00");
creo que el método más fácil sería utilizar strtotime()
función:
$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;
Función date_parse()
también se puede utilizar para la fecha y la hora de análisis:
$time = '21:30:10';
$parsed = date_parse($time);
$seconds = $parsed['hour'] * 3600 + $parsed['minute'] * 60 + $parsed['second'];
Si va a analizar formato MM:SS
con strtotime()
o date_parse()
se producirá un error (date_parse()
se utiliza en strtotime()
y DateTime
), porque cuando ingresa un formato como xx:yy
, el analizador asume que es HH:MM
y no MM:SS
. Sugeriría verificar el formato, y anteponer 00:
si solo tiene MM:SS
.
demostrtotime()
demodate_parse()
Si tiene horas más que 24, entonces se puede utilizar la siguiente función (que funcionará para MM:SS
y HH:MM:SS
formato):
function TimeToSec($time) {
$sec = 0;
foreach (array_reverse(explode(':', $time)) as $k => $v) $sec += pow(60, $k) * $v;
return $sec;
}
¡Gracias! Por cierto: ¡buen formato de enlaces! –
'strtotime()' no permite que las horas vayan más allá de 24 - con 25 o más se devolverá "falso". – Sven
@Sven: Actualicé la respuesta. –
simple
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');
Puede utilizar la función strtotime
para devolver el número de segundos desde today 00:00:00
.
$seconds= strtotime($time) - strtotime('00:00:00');
Si bien este fragmento de código puede resolver la pregunta, [incluyendo una explicación] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) realmente ayuda a mejorar la calidad de su publicación.Recuerde que usted está respondiendo la pregunta a los lectores en el futuro, y es posible que esas personas no sepan los motivos de su sugerencia de código. Por favor, intente no saturar su código con comentarios explicativos, ¡esto reduce la legibilidad tanto del código como de las explicaciones! –
Solución dulce. Pero, ¿no se rompería esto si HH no está presente? – simme
Simplemente lo arreglé para que no lo hiciera. –
¡Qué gran solución! – Ryan