Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   Problemas con funciones de tiempo..cual es el error en este codigo (https://www.clubdelphi.com/foros/showthread.php?t=43031)

rubencho 29-04-2007 05:50:40

Problemas con funciones de tiempo..cual es el error en este codigo
 
Hola..estoy teniendo problemas con algunas funciones de tiempo en php
Para explicarlo mejor escribí este pequeño codigo que lo que se supone que debe hacer es restar dos horas y devolver el valor
//-----------------------------------------------------
<?php
function hms_diff_time($initial_time, $final_time)
{
$i_time = split('[:-]',$initial_time);
$f_time = split('[:-]',$final_time);

$timestamp1 = mktime($i_time[0],$i_time[1],$i_time[2]);
$timestamp2 = mktime($f_time[0],$f_time[1],$f_time[2]);

$difference = $timestamp2 - $timestamp1;

$result = strftime("%H:%M:%S",$difference);

return $result;
}
?>
<head>
</head>
<body>
<?php
$t1 = "01:02:30";
$t2 = "01:04:40";
echo $t2." minus <br>";
echo $t1." equals<br>";
echo hms_diff_time($t1,$t2);
?>
</body>
//-----------------------------------------------------


El problema es que espero como reultado -> 00:02:10
pero estoy teniendo-> 19:02:10

Puede alguien ayudarme a identificar el error ??
Gracias

lucasarts_18 29-04-2007 06:47:39

Hola:

Ni idea por qué razón falla tu función, la estuve revisando pero tampoco encuentro el error, pero esta función que te dejo funciona cabalmente...

Código PHP:

function RestarHoras($horaini,$horafin)
{
$horai=substr($horaini,0,2);
$mini=substr($horaini,3,2);
$segi=substr($horaini,6,2);
$horaf=substr($horafin,0,2);
$minf=substr($horafin,3,2);
$segf=substr($horafin,6,2);
$ini=((($horai*60)*60)+($mini*60)+$segi);
$fin=((($horaf*60)*60)+($minf*60)+$segf);
$dif=$fin-$ini;
$difh=floor($dif/3600);
$difm=floor(($dif-($difh*3600))/60);
$difs=$dif-($difm*60)-($difh*3600);
return 
date("H:i:s",mktime($difh,$difm,$difs));


Hasta Luego .-

rubencho 29-04-2007 07:14:17

Gracias por la funcion
 
De todas maneras me queda la inquietud acerca del codigo inicial....sin embargo esta funcion me ayudará bastante

lucasarts_18 29-04-2007 07:39:05

Cita:

Empezado por rubencho
De todas maneras me queda la inquietud acerca del codigo inicial

A mí igual....:o

rubencho 29-04-2007 12:07:01

Me acaban de dar una solucion
 
Hola lucasarts_18.

Te agradezco por haberme sacado del apuro que tenía...

Esta es otra solución que me dieron:

usar
Código PHP:

$result gmdate('H:i:s'$difference); 

en vez de:
Código PHP:

         $result strftime("%H:%M:%S",$difference); 

Ya que al parecer strftime está adicionando el offset de mi zona horaria (Colombia)

Ahora la inquietud que me surge es si usando "gmdate" el script funcionará bien en cualquier país pues el código que estoy desarrollando pretende ser usado en otras zonas horarias...

lucasarts_18 29-04-2007 22:28:39

Cita:

Empezado por rubencho
Ahora la inquietud que me surge es si usando "gmdate" el script funcionará bien en cualquier país pues el código que estoy desarrollando pretende ser usado en otras zonas horarias...

Pues al parecer lamento decirte que según la ayuda de php, este tomará la hora de acuerdo al lugar que estés relacionado al paralelo Greenwich...

Cita:

Empezado por ayuda php
Por ejemplo cuando se ejecuta en Finlandia (GMT +0200), la primera línea a continuación imprime "Jan 01 1998 00:00:00", mientras que la segunda imprime "Dec 31 1997 22:00:00".

Hasta Luego .-


La franja horaria es GMT +2. Ahora son las 18:42:37.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi