Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Restar tiempo.

Estas en el tema de Restar tiempo. en el foro de PHP en Foros del Web. Hola, por favor me podeis decir como restar dos horas que recupero de la base de datos. Código PHP: De  <?php  echo  $row_Recordset4 [ 'hora_entrada' ...
  #1 (permalink)  
Antiguo 06/05/2013, 16:41
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Restar tiempo.

Hola, por favor me podeis decir como restar dos horas que recupero de la base de datos.

Código PHP:
De <?php echo $row_Recordset4['hora_entrada']; ?> a <?php echo $row_Recordset4['hora_salida']; ?><span class="ui-li-count"><?php echo $diferencia ?></span>
Gracias
  #2 (permalink)  
Antiguo 06/05/2013, 16:56
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Respuesta: Restar tiempo.

Podrías usar DateTime haciendo algo así:

Código PHP:
$entrada = new DateTime($row_Recordset4['hora_entrada']);
$salida = new DateTime($row_Recordset4['hora_salida']);

$diferencia $entrada->diff($salida);

echo 
$diferencia->format("%H:%i"); 
  #3 (permalink)  
Antiguo 06/05/2013, 17:11
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Restar tiempo.

Cita:
Iniciado por pzin Ver Mensaje
Podrías usar DateTime haciendo algo así:

Código PHP:
$entrada = new DateTime($row_Recordset4['hora_entrada']);
$salida = new DateTime($row_Recordset4['hora_salida']);

$diferencia $entrada->diff($salida);

echo 
$diferencia->format("%H:%i"); 
Gracias, pero lo he puesto y me da un error:
Código PHP:
Fatal errorCall to undefined method DateTime::diff() 
Código PHP:
<?php do { ?>
 <?
$entrada 
= new DateTime($row_Recordset4['hora_entrada']);
$salida = new DateTime($row_Recordset4['hora_salida']);

$diferencia $entrada->diff($salida);

echo 
$diferencia->format("%H:%i");  
?> 
    
    <li data-role="list-divider" role="heading">[<?php echo $row_Recordset1['tecnico']; ?>]</li>
  <li data-role="list-divider" role="heading"><?php echo $row_Recordset4['fecha']; ?></li><li data-theme="c">
    
    De <?php echo $row_Recordset4['hora_entrada']; ?> a <?php echo $row_Recordset4['hora_salida']; ?><span class="ui-li-count"><?php echo $diferencia ?></span>
    
 <li data-role="list-divider" role="heading">El contador de tiempo se ha parado <?php echo $row_Recordset4['fecha']; ?> a las <?php echo $row_Recordset4['hora_salida']; ?> con nº<?php echo $row_Recordset4['id_contador']; ?><br/></li> 
   
  </li>
  <?php } while ($row_Recordset4 mysql_fetch_assoc($Recordset4)); ?>

Gracias
  #4 (permalink)  
Antiguo 06/05/2013, 18:22
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Restar tiempo.

lo mas seguro es que tengas una versión de php menor a 5.3, aquí http://www.iremart.es/restar-y-sumar-horas-en-php/ ejemplo y te aseguro que en google encuentras muchos mas, aunque siempre es bueno cuando el php esta actualizado y podemos hacer uso de todo lo que nos brinda, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #5 (permalink)  
Antiguo 07/05/2013, 02:24
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Restar tiempo.

Cita:
Iniciado por carlos_belisario Ver Mensaje
lo mas seguro es que tengas una versión de php menor a 5.3, aquí http://www.iremart.es/restar-y-sumar-horas-en-php/ ejemplo y te aseguro que en google encuentras muchos mas, aunque siempre es bueno cuando el php esta actualizado y podemos hacer uso de todo lo que nos brinda, saludos
Gracias, lo estoy haciendo así pero no me sale:

Código PHP:
<ul data-role="listview" data-divider-theme="b" data-inset="true">
  <?php do { ?>
  
<?php

function restaHoras($horaIni$horaFin){

return (
date("H:i:s"strtotime("00:00:00") + strtotime($horaFin) - strtotime($horaIni) ));

}

$diferencia=restaHoras("$hora_salida","$hora_entrada");
echo 
"<br>";

?> 
    
    <li data-role="list-divider" role="heading">[<?php echo $row_Recordset1['tecnico']; ?>]</li>
  <li data-role="list-divider" role="heading"><?php echo $row_Recordset4['fecha']; ?></li><li data-theme="c">
    
    De <?php echo $row_Recordset4['hora_entrada']; ?> a <?php echo $row_Recordset4['hora_salida']; ?><span class="ui-li-count"><?php echo $diferencia ?></span>
    
 <li data-role="list-divider" role="heading">El contador de tiempo se ha parado <?php echo $row_Recordset4['fecha']; ?> a las <?php echo $row_Recordset4['hora_salida']; ?> con nº<?php echo $row_Recordset4['id_contador']; ?><br/></li> 
   
  </li>
  <?php } while ($row_Recordset4 mysql_fetch_assoc($Recordset4)); ?>
                                  
                                  </ul>
  #6 (permalink)  
Antiguo 07/05/2013, 02:31
 
Fecha de Ingreso: febrero-2010
Mensajes: 45
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Restar tiempo.

Hola, puedes provar con lo siguiente:

En caso de que tengas un datetime:

Código PHP:
$fecha "2013-03-12 10:00:00";
echo 
date("Y-m-d H:i:s"strtotime$fecha." - 2 hour")) ; 

En caso de que tengas solo hora sin fecha:

Código PHP:
$fecha "10:00:00";
echo 
date("H:i:s"strtotime$fecha." - 2 hour")) ; 
A mi me funciona sin problemas, esto mismo te sirve para sumar horas, minuts, dias años. Cambiando el valor de "-2 hour" por: -1 day, +5 year...
  #7 (permalink)  
Antiguo 07/05/2013, 04:03
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Restar tiempo.

Cita:
Iniciado por xorow Ver Mensaje
Hola, puedes provar con lo siguiente:

En caso de que tengas un datetime:

Código PHP:
$fecha "2013-03-12 10:00:00";
echo 
date("Y-m-d H:i:s"strtotime$fecha." - 2 hour")) ; 

En caso de que tengas solo hora sin fecha:

Código PHP:
$fecha "10:00:00";
echo 
date("H:i:s"strtotime$fecha." - 2 hour")) ; 
A mi me funciona sin problemas, esto mismo te sirve para sumar horas, minuts, dias años. Cambiando el valor de "-2 hour" por: -1 day, +5 year...

Gracias, pero no entiendo como adaptarlo a mi código???
  #8 (permalink)  
Antiguo 07/05/2013, 04:30
 
Fecha de Ingreso: febrero-2010
Mensajes: 45
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Restar tiempo.

Hola Satjane, y que te parece esta solución para tu problema:

Código PHP:

$fecha1 
strtotime("2013-03-12 10:00:00");
$fecha2 strtotime("2013-03-12 11:00:00");

$diferencia_segundos = ($fecha2-$fecha1);
$diferencia_minutos = ($fecha2-$fecha1)/60;
$diferencia_horas = ($fecha2-$fecha1)/60/60
desde 2 fechas, las conviertes a tipo time y las restas. Esta resta te devuelve el resultado en segundos y ya te haces tus operaciones para tener la diferencia como quieras
  #9 (permalink)  
Antiguo 07/05/2013, 04:58
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Restar tiempo.

Cita:
Iniciado por xorow Ver Mensaje
Hola Satjane, y que te parece esta solución para tu problema:

Código PHP:

$fecha1 
strtotime("2013-03-12 10:00:00");
$fecha2 strtotime("2013-03-12 11:00:00");

$diferencia_segundos = ($fecha2-$fecha1);
$diferencia_minutos = ($fecha2-$fecha1)/60;
$diferencia_horas = ($fecha2-$fecha1)/60/60
desde 2 fechas, las conviertes a tipo time y las restas. Esta resta te devuelve el resultado en segundos y ya te haces tus operaciones para tener la diferencia como quieras
Si pero el problema es que tengo que hacerlo con las recuperaciones de la base de datos no???

<?php echo $row_Recordset4['hora_entrada']; ?>
<?php echo $row_Recordset4['hora_salida']; ?>
  #10 (permalink)  
Antiguo 07/05/2013, 05:43
 
Fecha de Ingreso: febrero-2010
Mensajes: 45
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Restar tiempo.

Si claro,

lo haces así:

Código PHP:
$fecha1 strtotime($row_Recordset4['hora_entrada']);
$fecha2 strtotime($row_Recordset4['hora_salida']);

$diferencia_segundos = ($fecha2-$fecha1);
$diferencia_minutos = ($fecha2-$fecha1)/60;
$diferencia_horas = ($fecha2-$fecha1)/60/60
Hay que tener en cuenta que el campo donde almacenas la fecha en tu base de datos está en formato date o datetime.
  #11 (permalink)  
Antiguo 07/05/2013, 05:52
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Restar tiempo.

Cita:
Iniciado por xorow Ver Mensaje
Si claro,

lo haces así:

Código PHP:
$fecha1 strtotime($row_Recordset4['hora_entrada']);
$fecha2 strtotime($row_Recordset4['hora_salida']);

$diferencia_segundos = ($fecha2-$fecha1);
$diferencia_minutos = ($fecha2-$fecha1)/60;
$diferencia_horas = ($fecha2-$fecha1)/60/60
Hay que tener en cuenta que el campo donde almacenas la fecha en tu base de datos está en formato date o datetime.
Ok, gracias es lo que no me salia.

Etiquetas: restar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:19.