ayuda calculo entre horas y fechas de la bd
Publicado por rodrigo (2 intervenciones) el 13/03/2013 15:55:36
hola buenas tardes tengo un problemilla en un codigo de calculo entre 2 horas
lo que pasa es que si calculo bien pero cuando pasa mas de un dia no los cuenta
ejemplo de resultado: 0 días 0: 6:43 hrs
y cuando pasa mas de un días quedaría haci: -0 dias 0: 6:43 hrs
no sale de 0 los días solo quiero que cuente los días también
los datos de las horas los trae de registros en la base de datos dependiendo de los diferentes estados (1,2,3,4,5)
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
el resultado se muestra en un reporte donde toma el tiempo con el estado anterior para ver si cumplio o no con los tiempos.
de antemano muchas gracias
lo que pasa es que si calculo bien pero cuando pasa mas de un dia no los cuenta
ejemplo de resultado: 0 días 0: 6:43 hrs
y cuando pasa mas de un días quedaría haci: -0 dias 0: 6:43 hrs
no sale de 0 los días solo quiero que cuente los días también
los datos de las horas los trae de registros en la base de datos dependiendo de los diferentes estados (1,2,3,4,5)
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
el resultado se muestra en un reporte donde toma el tiempo con el estado anterior para ver si cumplio o no con los tiempos.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<?php
error_reporting(0);
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 registro WHERE folio = '{$folio}' AND codigo_estado = '{$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
Valora esta pregunta


0