Rodrigo193 Posted March 11, 2013 Report Share Posted March 11, 2013 (edited) hola buenas tardes tengo un problemilla en un codigo de calculo entre 2 horaslo que pasa es q si calculo bien pero cuando pasa mas de un dia no los cuenta ejemplo de resultado 0 dias 0: 6:43 hrsy 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 los datos de las horas los trae de registros en la base de datos dependiendo de los diferentes estados (1,2,3,4,5) <?php function resta($inicio, $fin){ $dif=date("H:i:s", strtotime("00:00:00") + strtotime($fin) - strtotime($inicio) ); return $dif; } function str2ts( $time ) { $atime = explode(':', $time); return mktime((int)$atime[0], (int)$atime[1], (int)$atime[2]); } function ts_time_diff( $ts_after, $ts_before ) { global $pers; if( !isset($pers) ) $pers = array(array(60, ':%2d hrs'), array(60, ':%2d'), array(24, '%d'),'%d dias '); $str_diff = ''; $ts_diff = $ts_after - $ts_before; if( $bln_neg = $ts_diff < 0 ) $ts_diff *= -1; for( $i = 0; $i < count($pers) - 1; $i ++ ) { $str_diff = sprintf($pers[$i][1], $ts_diff % $pers[$i][0]). $str_diff; $ts_diff = (int)$ts_diff / $pers[$i][0]; } $str_diff = sprintf($pers[$i], $ts_diff). $str_diff; return ($bln_neg ? '' : ''). $str_diff; } function buscaHora($codigo,$folio,$hora,$r=false){ include_once 'mySQLData.php'; $info2 = array(); $info2[0] = '1'; $info2[1] = '2'; $info2[2] = '3'; $info2[3] = '4'; $info2[4] = '5'; $min = array(); $min[0] = 30; $min[1] = 60; $min[2] = 120; $min[3] = 180; $min[4] = 210; $key = 0; foreach ($info2 as $k => $v) { if($v == $codigo) $key = $k; } if($key>0){ $key--; $base = new mySQLData(); $sql = "SELECT hora FROM tabla WHERE id = '{$id}' AND codigo = '{$info2[$key]}' "; $result = $base->consulta($sql); $arreglo = mysql_fetch_assoc($result); if($r){ return ( str2ts($hora)-str2ts($arreglo['hora']) )/60 > $min[$key+1] ? 1:0; } else{ if(ts_time_diff( str2ts($hora),str2ts($arreglo['hora']))!='0') echo ts_time_diff( str2ts($hora),str2ts($arreglo['hora']) ); else return 0; } } else{ return 0; } }?> de antemano muchas gracias Edited March 11, 2013 by Rodrigo193 Link to comment Share on other sites More sharing options...
cañangasñangas Posted March 11, 2013 Report Share Posted March 11, 2013 no quize leer el codigo porque quiero saber antes, quieres saber la diferencia entre 2 fechas y mostradas en horas? Link to comment Share on other sites More sharing options...
Rodrigo193 Posted March 11, 2013 Author Report Share Posted March 11, 2013 (edited) no quize leer el codigo porque quiero saber antes, quieres saber la diferencia entre 2 fechas y mostradas en horas? gracias por responder :) ese codigo solo calcula horas ejemplo h1: 10:00:09ejemplo h2: 12:00:09y muestra el resultado las horas las saca de la bd. 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. que debo modificarse para que mejore. 0 dias 6: 9: 1 hrs (siempre los Días marca 0) antemano Gracias :D Edited March 11, 2013 by Rodrigo193 Link to comment Share on other sites More sharing options...
cañangasñangas Posted April 2, 2013 Report Share Posted April 2, 2013 ultima consulta me podrias decir en que formato tienes las fechas? Link to comment Share on other sites More sharing options...
Ra Posted April 3, 2013 Report Share Posted April 3, 2013 Revisa estohttp://www.php.net/manual/en/datetime.diff.php El problema es que estás procesando horas y no fechas... Entonces: 13:00:00 - 11:00:00 puede ser igual a: 0 días, 2 horas1 días, 2 horas2 días, 2 horasetc.etc.etc. Link to comment Share on other sites More sharing options...
cañangasñangas Posted April 3, 2013 Report Share Posted April 3, 2013 Revisa estohttp://www.php.net/manual/en/datetime.diff.php El problema es que estás procesando horas y no fechas... Entonces: 13:00:00 - 11:00:00 puede ser igual a: 0 días, 2 horas1 días, 2 horas2 días, 2 horasetc.etc.etc. excactamente.... esperemos que Rodrigo193 mande una respuesta... Link to comment Share on other sites More sharing options...
valericio Posted April 12, 2013 Report Share Posted April 12, 2013 esto te puede servir...$fecha1 = new DateTime("2010-07-28 01:15:52");$fecha2 = new DateTime("2012-11-30 02:33:45");$fecha = $fecha1->diff($fecha2);printf('%d años, %d meses, %d días, %d horas, %d minutos', $fecha->y, $fecha->m, $fecha->d, $fecha->h, $fecha->i);// imprime: 2 años, 4 meses, 2 días, 1 horas, 17 minutos 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now