Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-04-2007
rubencho rubencho is offline
Miembro
 
Registrado: mar 2007
Posts: 14
Poder: 0
rubencho Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 29-04-2007
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
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 .-
__________________
No todo es como parece ser...
Responder Con Cita
  #3  
Antiguo 29-04-2007
rubencho rubencho is offline
Miembro
 
Registrado: mar 2007
Posts: 14
Poder: 0
rubencho Va por buen camino
Gracias por la funcion

De todas maneras me queda la inquietud acerca del codigo inicial....sin embargo esta funcion me ayudará bastante
Responder Con Cita
  #4  
Antiguo 29-04-2007
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Cita:
Empezado por rubencho
De todas maneras me queda la inquietud acerca del codigo inicial
A mí igual....
__________________
No todo es como parece ser...
Responder Con Cita
  #5  
Antiguo 29-04-2007
rubencho rubencho is offline
Miembro
 
Registrado: mar 2007
Posts: 14
Poder: 0
rubencho Va por buen camino
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...
Responder Con Cita
  #6  
Antiguo 29-04-2007
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
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 .-
__________________
No todo es como parece ser...
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
codigo de la tecla tab cual es? sakuragi OOP 8 17-03-2010 04:01:21
Eliminar Codigo Cual es la mejor Forma ? sierraja Varios 1 12-04-2007 00:41:00
Que significa este codigo? D-MO PHP 14 23-01-2006 10:08:21
No me gusta este Codigo, Me ayudan?! marceloalegre Varios 5 28-10-2005 01:27:27
Por que no funciona este codigo en XP? kia Varios 3 15-10-2003 21:39:33


La franja horaria es GMT +2. Ahora son las 06:41:23.


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
Copyright 1996-2007 Club Delphi