Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/03/2013, 11:45
rodrigo193
 
Fecha de Ingreso: marzo-2013
Mensajes: 16
Antigüedad: 11 años, 9 meses
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