En mi aplicación de PHP quiero calcular la suma de dos variables de tiempo. Estoy buscando algo como este ejemplo.PHP sumar dos variables de tiempo
$time1 = 15:20:00;
$time2 = 00:30:00;
$time = $time1+$time2;
En mi aplicación de PHP quiero calcular la suma de dos variables de tiempo. Estoy buscando algo como este ejemplo.PHP sumar dos variables de tiempo
$time1 = 15:20:00;
$time2 = 00:30:00;
$time = $time1+$time2;
La mejor manera de hacer esto es más probable que utilice strtotime para convertirlos en marcas de tiempo y luego hacer la totalización:
$o = strtotime($time1)+strtotime($time2);
Si recuerdo bien strtotime
¿son compatibles con este formato.
De lo contrario, tendrá que filtrarlo usted mismo.
Se podría utilizar el PHP 5.3 DateInterval
:
$timeInterval = DateInterval::createFromDateString('15 hours + 20 minutes');
$timeInterval2 = DateInterval::createFromDateString('30 minutes');
foreach(str_split('ymdhis') as $prop)
{
$timeInterval->$prop += $timeInterval2->$prop;
}
var_dump($timeInterval->format('%H:%i:%s'));
(¿Cómo añadir a los objetos DateInterval se explicó aquí: How we can add two date intervals in PHP)
Por lo Puedo decir que la respuesta de Sammaye no funcionó para mí.
Necesitaba comenzar la hora que quería agregar con el comienzo de la marca de tiempo de UNIX. De esta forma, strtotime
devuelve los segundos que deben agregarse por primera vez.
$time1 = "15:20:00";
$time2 = "1970-01-01 00:30:00";
$time = strtotime($time1) + (strtotime($time2) + 3600);
echo $time . "<br />";
echo date("H:i:s", $time);
Asegúrese de consultar los documentos místicos http://us1.php.net/strtotime cosas adicionales que pueden ingresarse en sus funciones :)
$today = time();
$tommorrow = strtotime("+1 days", $today);
$day_after_tomorrow = strtotime("+1 days", $tomorrow);
Si la respuesta que esperas es 15:50:00
y desea utilizar strtotime
y date
funciones, necesita restar los segundos $time1
y $time2
compartir cuando los transforma en marcas de tiempo de Unix:
$time1 = '15:20:00';
$time2 = '00:30:00';
$time = strtotime($time1) + strtotime($time2) - strtotime('00:00:00');
$time = date('H:i:s', $time);
Esto es genial y simple, pero sería más relevante si puede proporcionar más explicaciones sobre la resta de ese valor 0 de tiempo. – rhavendc
La siguiente respuesta no devuelve el valor correcto. Se suman enteros pero no se devuelve la hora correcta.
$ o = strtotime ($ time1) + strtotime ($ time2);
Creé una función para calcular el tiempo de la siguiente manera.
public function addTwoTimes($time1 = "00:00:00", $time2 = "00:00:00"){
$time2_arr = [];
$time1 = $time1;
$time2_arr = explode(":", $time2);
//Hour
if(isset($time2_arr[0]) && $time2_arr[0] != ""){
$time1 = $time1." +".$time2_arr[0]." hours";
$time1 = date("H:i:s", strtotime($time1));
}
//Minutes
if(isset($time2_arr[1]) && $time2_arr[1] != ""){
$time1 = $time1." +".$time2_arr[1]." minutes";
$time1 = date("H:i:s", strtotime($time1));
}
//Seconds
if(isset($time2_arr[2]) && $time2_arr[2] != ""){
$time1 = $time1." +".$time2_arr[2]." seconds";
$time1 = date("H:i:s", strtotime($time1));
}
return date("H:i:s", strtotime($time1));
}
¿Cómo ha intentado hacer esto? – Fluffeh
¿Tiene algunos ejemplos de cómo deberían ser sus resultados? – Pete
DateTime y DateInterval classes. http://www.php.net/manual/en/book.datetime.php – dnagirl