Foros del Web » Programando para Internet » PHP »

calculo entre horas php

Estas en el tema de calculo entre horas php en el foro de PHP en Foros del Web. hola buenas tardes tengo un problemilla en un codigo de calculo entre 2 horas lo que pasa es que si calcula bien pero cuando pasa ...
  #1 (permalink)  
Antiguo 11/03/2013, 11:45
 
Fecha de Ingreso: marzo-2013
Mensajes: 16
Antigüedad: 11 años, 1 mes
Puntos: 0
Pregunta calculo entre horas php

hola buenas tardes tengo un problemilla en un codigo de calculo entre 2 horas
lo que pasa es que si calcula bien pero cuando pasa mas de un día no los cuenta
los datos de las horas los trae de registros en la base de datos dependiendo de los diferentes estados (1,2,3,4,5)

ejemplo de resultado: 0 dias 0: 6:43 hrs
y cuando pasa mas de un dias quedaria haci: -0 dias 0: 6:43 hrs
no sale de 0 los dias solo quiero que cuente los dias tambien


Código PHP:
Ver original
  1. <?php
  2.  
  3.  
  4. function resta($inicio, $fin){
  5. $dif=date("H:i:s", strtotime("00:00:00") + strtotime($fin) - strtotime($inicio) );
  6. return $dif;
  7. }
  8.  
  9. function str2ts( $time ) {
  10. $atime = explode(':', $time);
  11. return mktime((int)$atime[0], (int)$atime[1], (int)$atime[2]);
  12. }
  13.  
  14. function ts_time_diff( $ts_after, $ts_before ) {
  15. global $pers;
  16. if( !isset($pers) )
  17. $pers = array(array(60, ':%2d hrs'), array(60, ':%2d'), array(24, '%d'),'%d dias ');
  18. $str_diff = '';
  19. $ts_diff = $ts_after - $ts_before;
  20. if( $bln_neg = $ts_diff < 0 )
  21. $ts_diff *= -1;
  22. for( $i = 0; $i < count($pers) - 1; $i ++ ) {
  23. $str_diff = sprintf($pers[$i][1], $ts_diff % $pers[$i][0]). $str_diff;
  24. $ts_diff = (int)$ts_diff / $pers[$i][0];
  25. }
  26. $str_diff = sprintf($pers[$i], $ts_diff). $str_diff;
  27. return ($bln_neg ? '' : ''). $str_diff;
  28. }
  29.  
  30. function buscaHora($codigo,$folio,$hora,$r=false){
  31. include_once 'mySQLData.php';
  32.  
  33. $info2 = array();
  34. $info2[0] = '1';
  35. $info2[1] = '2';
  36. $info2[2] = '3';
  37. $info2[3] = '4';
  38. $info2[4] = '5';
  39.  
  40. $min = array();
  41. $min[0] = 30;
  42. $min[1] = 60;
  43. $min[2] = 120;
  44. $min[3] = 180;
  45. $min[4] = 210;
  46.  
  47. $key = 0;
  48.  
  49. foreach ($info2 as $k => $v) {
  50. if($v == $codigo)
  51. $key = $k;
  52. }
  53.  
  54. if($key>0){
  55. $key--;
  56. $base = new mySQLData();
  57. $sql = "SELECT hora FROM tabla WHERE id = '{$id}' AND codigo = '{$info2[$key]}' ";
  58. $result = $base->consulta($sql);
  59. $arreglo = mysql_fetch_assoc($result);
  60. if($r){
  61. return ( str2ts($hora)-str2ts($arreglo['hora']) )/60 > $min[$key+1] ? 1:0;
  62. }
  63. else{
  64. if(ts_time_diff( str2ts($hora),str2ts($arreglo['hora']))!='0')
  65. echo ts_time_diff( str2ts($hora),str2ts($arreglo['hora']) );
  66. else
  67. return 0;
  68. }
  69. }
  70. else{
  71. return 0;
  72. }
  73. }
  74. ?>


de antemano muchas gracias

Última edición por rodrigo193; 11/03/2013 a las 12:28
  #2 (permalink)  
Antiguo 11/03/2013, 13:25
 
Fecha de Ingreso: marzo-2013
Mensajes: 16
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: calculo entre horas php

nadie sabe como solucionarlo? necesito ayuda sumamente urgente :(


agredeceria mucho su ayuda
  #3 (permalink)  
Antiguo 11/03/2013, 14:02
Avatar de evolutionrgm  
Fecha de Ingreso: mayo-2011
Mensajes: 108
Antigüedad: 12 años, 11 meses
Puntos: 5
Respuesta: calculo entre horas php

hola man prueba con esto ver si te funca ..

Código PHP:
Ver original
  1. declare @FechaIngreso datetime
  2.     declare @FechaEgreso datetime
  3.  
  4.     select @FechaIngreso = '19981231 15:15'
  5.     select @FechaEgreso = '20021005 10:10'
  6.  
  7.     Select
  8.     DATEDIFF(dd, @FechaIngreso, @FechaEgreso) AS Dias,
  9.     DATEDIFF(mm, @FechaIngreso, @FechaEgreso) AS Meses,
  10.     DATEDIFF(mi, @FechaIngreso, @FechaEgreso) AS Minutos
  #4 (permalink)  
Antiguo 11/03/2013, 14:18
 
Fecha de Ingreso: marzo-2013
Mensajes: 16
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: calculo entre horas php

Cita:
Iniciado por evolutionrgm Ver Mensaje
hola man prueba con esto ver si te funca ..

Código PHP:
Ver original
  1. declare @FechaIngreso datetime
  2.     declare @FechaEgreso datetime
  3.  
  4.     select @FechaIngreso = '19981231 15:15'
  5.     select @FechaEgreso = '20021005 10:10'
  6.  
  7.     Select
  8.     DATEDIFF(dd, @FechaIngreso, @FechaEgreso) AS Dias,
  9.     DATEDIFF(mm, @FechaIngreso, @FechaEgreso) AS Meses,
  10.     DATEDIFF(mi, @FechaIngreso, @FechaEgreso) AS Minutos

gracias he visto códigos parecidos pero necesito algo que funcione con el que tengo ya que trae las horas de la base de datos dependiendo de la etapa en que esta hace el calculo, el problema es que ese código no calcula la fecha por en de no muestra los días que pasaron y por eso siempre queda en 0.
en la base de datos también guardo la fecha pero no se como unirla al código para que reste y diga ohh paso 1 día 6: 9: 1 hrs.

saludos y gracias nuevamente
  #5 (permalink)  
Antiguo 11/03/2013, 15:35
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: calculo entre horas php

verifica cual de estos dos métodos de la clase DateTime te sirve
- http://www.php.net/manual/es/datetime.modify.php
- http://www.php.net/manual/es/datetime.modify.php

creo que alguno de los dos es lo que necesitas, 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
  #6 (permalink)  
Antiguo 11/03/2013, 16:15
 
Fecha de Ingreso: marzo-2013
Mensajes: 16
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: calculo entre horas php

Cita:
Iniciado por carlos_belisario Ver Mensaje
verifica cual de estos dos métodos de la clase DateTime te sirve
- [url]http://www.php.net/manual/es/datetime.modify.php[/url]
- [url]http://www.php.net/manual/es/datetime.modify.php[/url]

creo que alguno de los dos es lo que necesitas, saludos
tampoco me sirvio :c pero muchas gracias

lo que busco es unir una funcion al codigo q tengo para que muestro los dias o
si a alguien se le ocurre otra cosa todo es bienvenido :)
  #7 (permalink)  
Antiguo 12/03/2013, 07:35
 
Fecha de Ingreso: marzo-2013
Mensajes: 16
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: calculo entre horas php

sigo sin poder resolver el problema :/
a alguien se le ocurre alguna otra solución se los agradecería mucho

Etiquetas: calculo, horas, mysql, registro, select, sql, tabla
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 07:57.