Jump to content

ayuda en calculo entre 2 horas


Recommended Posts

hola buenas tardes tengo un problemilla en un codigo de calculo entre 2 horas

lo 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 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

 

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 by Rodrigo193
Link to comment
Share on other sites

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:09

ejemplo h2: 12:00:09

y 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 by Rodrigo193
Link to comment
Share on other sites

  • 4 weeks later...
  • 2 weeks later...

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

 

 

 

  • Upvote 1
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...