Foros del Web » Creando para Internet » Diseño web »

Timestamp y mktime da error

Estas en el tema de Timestamp y mktime da error en el foro de Diseño web en Foros del Web. Tengo un problema. Debo medir el tiempo que un usuario esta dentro del sitio. Para esto debo usar un registro en la base de datos. ...
  #1 (permalink)  
Antiguo 08/08/2009, 22:27
 
Fecha de Ingreso: julio-2009
Mensajes: 26
Antigüedad: 8 años, 4 meses
Puntos: 0
Timestamp y mktime da error

Tengo un problema. Debo medir el tiempo que un usuario esta dentro del sitio.
Para esto debo usar un registro en la base de datos. A la entrada se guarda la hora en la BBDD en formato date().
A la salida hago una lectura de la BBDD y obtengo la hora de entrada, con un nuevo date() tengo la hora actual.
Debo restar de alguna manera ambas para obtener el tiempo que transcurrio.

Para esto hice un substr de la hora de entrada para colocar los valores en un mktime().

Algo asi
Código:
$fecha2 = time();
$min2=date("i",$fecha2);
$horas2=date ("H",$fecha2);
$consulta=consultasql
$HoraEnt=BBDD::ConsultaHoraEnt($consulta);

$HoraPars=substr($HoraEnt,11,2);//Porque tambien imprimo la fecha
$MinPars=substr($HoraEnt,14,2);

	$timestampSal = mktime($horas2,$min2,0,1,1,1);

       $timestampEnt = mktime($HoraPars,$MinPars,0,1,1,1);

	$dif = abs($timestampSal - $timestampEnt);
	$mindif= floor($dif/60);
Se supone que la variable $mindif deberia tener los minutis transcurridos. Pero si el usuario esta entre las 23:xx y las 00:xx obtengo un valor enorme, mas de 1300.

No encuentro el error. Que puede ser.
Gracias de antemano al genio que se de cuenta!!
  #2 (permalink)  
Antiguo 09/08/2009, 01:19
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.741
Antigüedad: 9 años, 4 meses
Puntos: 2113
Respuesta: Timestamp y mktime da error

Te complicas demasiado el calculo, trabaja todo como timestamp (fecha y hora) y obtienes directamente la diferencia en segundos:

Código php:
Ver original
  1. $HoraEnt=BBDD::ConsultaHoraEnt($consulta);
  2. // time() es la hora actual, conviertes $HoraEnt en timestamp y calculas la diferencia
  3. $diff = time() - strtotime($HoraEnt);
  4. // Conviertes en minutos como lo haces normalmente
  5. $mindif = floor($dif/60);

El problema era que al hacer el calculo con solo horas pierdes el control cuando el usuario ingresa en los ultimos minutos del dia y sale ya en el dia siguiente.
__________________
- León, Guanajuato
- GV-Foto
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:38.