Autor Tema: Funcion para mostrar cuanto tiempo ha pasado...  (Leído 2473 veces)

Desconectado kekoman

  • PHPero Master
  • ******
  • Mensajes: 1.180
  • Karma: 45
  • Sexo: Masculino
  • Mi nuevo usuario es marco811
    • Ver Perfil
Funcion para mostrar cuanto tiempo ha pasado...
« en: 12 de Noviembre de 2009, 22:15:44 pm »
Buenas phperos  :D Os voy a enseñar como mostrar cuanto tiempo ha pasado desde una determinada fecha (en formato time) en palabras. Esto se puede usar para mostrar hace cuanto tiempo fue la ultima vez que un usuario ha estado online o para lo que nos venga en gana.

Esta funcion ha sido creada 100% por mi en una tarde de aburrimiento :-[

function transcurido($time) {
$transcurido time()-$time;
$tc['minutos'] = @$transcurido/60;
$tc['horas'] = @$transcurido/3600;
$tc['dias'] = @$transcurido/86400;
$tc['meses'] = @$transcurido/'2629743,83';
$tc['años'] = @$transcurido/31556926;
$plu['minutos'] = (intval($tc['minutos'])==1) ? NULL : 's';
$plu['horas'] = (intval($tc['horas'])==1) ? NULL : 's';
$plu['dias'] = (intval($tc['dias'])==1) ? NULL : 's';
$plu['meses'] = (intval($tc['meses'])==1) ? NULL : 's';
$plu['años'] = (intval($tc['años'])==1) ? NULL : 's';
$frase = ($transcurido<60 AND $transcurido>15) ? &#39;menos de un minuto&#39; : $frase;
$frase = ($transcurido>60 AND $transcurido<3600) ? intval($tc[&#39;minutos&#39;]).&#39; minuto&#39;.$plu[&#39;minutos&#39;] : $frase;
$frase = ($transcurido>3600 AND $transcurido<86400) ? intval($tc[&#39;horas&#39;]).&#39; hora&#39;.$plu[&#39;horas&#39;] : $frase;
$frase = ($transcurido>86000 AND $transcurido<&#39;2629743,83&#39;) ? intval($tc[&#39;dias&#39;]).&#39; dia&#39;.$plu[&#39;dias&#39;] : $frase;
$frase = ($transcurido>&#39;2629743,83&#39; AND $transcurido<31556926) ? intval($tc[&#39;meses&#39;]).&#39; mese&#39;.$plu[&#39;meses&#39;] : $frase;
$frase = ($transcurido>31556926 AND $transcurido<315569260) ? intval($tc[&#39;años&#39;]).&#39; año&#39;.$plu[&#39;años&#39;] : $frase;
$frase = ($transcurido>3155692600) ? &#39;mas de 10 años&#39; : $frase;
return $frase;
}

Bueno se usa de la siguiente forma:

<?php
echo &#39;Ha pasado &#39;.transcurido($fecha);
?>

En la variable fecha ponemos la fecha en formato time, por ejemplo:

<?php
$fecha 
= &#39;1257954093&#39;;
?>

En este caso nos mostrara:Ha pasado 1 dia  :P
Bueno hasta aqui este post.
Un saludo!


Este usuario ya no lo uso, mi nuevo usuario es marco811

Comunidad PHPeros

Funcion para mostrar cuanto tiempo ha pasado...
« en: 12 de Noviembre de 2009, 22:15:44 pm »

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Re:Funcion para mostrar cuanto tiempo ha pasado...
« Respuesta #1 en: 12 de Noviembre de 2009, 22:21:30 pm »
Sencillo pero util... genial!

¿No iria en tutos?

Salu2.

Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
Re:Funcion para mostrar cuanto tiempo ha pasado...
« Respuesta #2 en: 12 de Noviembre de 2009, 22:28:41 pm »
Entendí el codigo completamente, pero para que usas $transcurido = time()-$time;
Mixtiqueros.net

<?PHP
define
(_miNombre, &#39;Focux&#39;);
if(_miNombre == &#39;Focux&#39;): printf(&#39;%s es un programador avanzado&#39;, _miNombre); else: printf(&#39;Tu no eres %s&#39;, _miNombre); endif;
?>

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Re:Funcion para mostrar cuanto tiempo ha pasado...
« Respuesta #3 en: 12 de Noviembre de 2009, 22:32:21 pm »
Entendí el codigo completamente, pero para que usas $transcurido = time()-$time;

Para saber la diferencia en segundos desde el time actual al de la fecha

Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
Re:Funcion para mostrar cuanto tiempo ha pasado...
« Respuesta #4 en: 12 de Noviembre de 2009, 22:35:09 pm »
¿Para qué necesitamos la diferencia?
« Última modificación: 12 de Noviembre de 2009, 22:39:18 pm por Focux »
Mixtiqueros.net

<?PHP
define
(_miNombre, &#39;Focux&#39;);
if(_miNombre == &#39;Focux&#39;): printf(&#39;%s es un programador avanzado&#39;, _miNombre); else: printf(&#39;Tu no eres %s&#39;, _miNombre); endif;
?>

Desconectado kekoman

  • PHPero Master
  • ******
  • Mensajes: 1.180
  • Karma: 45
  • Sexo: Masculino
  • Mi nuevo usuario es marco811
    • Ver Perfil
Re:Funcion para mostrar cuanto tiempo ha pasado...
« Respuesta #5 en: 12 de Noviembre de 2009, 23:18:18 pm »
¿Para qué necesitamos la diferencia?
    El mismo titulo del tema lo dice:
cuanto tiempo ha pasado entre una fecha especifica del pasado y el presente, en terminos matematicos y de programacion:
 
time() : fecha actual

$time : fecha especificada

time()-$time=tiempo transcurido

Vamos que no puede ser mas facil xd!

Un saludo.[/list]
« Última modificación: 12 de Noviembre de 2009, 23:22:42 pm por kekoman »


Este usuario ya no lo uso, mi nuevo usuario es marco811

Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
Re:Funcion para mostrar cuanto tiempo ha pasado...
« Respuesta #6 en: 13 de Noviembre de 2009, 14:24:50 pm »
Es verdad, no me había fijado bien, más claro de ahi no puede estar.
Saludos,
Focux
Mixtiqueros.net

<?PHP
define
(_miNombre, &#39;Focux&#39;);
if(_miNombre == &#39;Focux&#39;): printf(&#39;%s es un programador avanzado&#39;, _miNombre); else: printf(&#39;Tu no eres %s&#39;, _miNombre); endif;
?>

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:Funcion para mostrar cuanto tiempo ha pasado...
« Respuesta #7 en: 13 de Enero de 2010, 19:10:33 pm »
Perdón por revivir el tema , pero esto es justo lo que estaba buscando ;) Ahora tengo una pregunta. Imaginemos que yo coloco este script , en mi code. Lo que quiero hacer es por ejemplo , llevas X tiempo conectado pero que cuando el usuario cierre sesion se guarde en la BD el tiempo que ha estado conectado ¿Podríais guiarme?

#Fdo. Physlet

Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
Re:Funcion para mostrar cuanto tiempo ha pasado...
« Respuesta #8 en: 13 de Enero de 2010, 19:23:51 pm »
Perdón por revivir el tema , pero esto es justo lo que estaba buscando ;) Ahora tengo una pregunta. Imaginemos que yo coloco este script , en mi code. Lo que quiero hacer es por ejemplo , llevas X tiempo conectado pero que cuando el usuario cierre sesion se guarde en la BD el tiempo que ha estado conectado ¿Podríais guiarme?
Lo que tienes que hacer es que al logearse en una fila guardes el tiempo en segundos con time() y ya. Es mas facil de lo que crees.
Mixtiqueros.net

<?PHP
define
(_miNombre, &#39;Focux&#39;);
if(_miNombre == &#39;Focux&#39;): printf(&#39;%s es un programador avanzado&#39;, _miNombre); else: printf(&#39;Tu no eres %s&#39;, _miNombre); endif;
?>

Desconectado Siquillote

  • PHPero Master
  • ******
  • Mensajes: 4.229
  • Karma: 179
  • Sexo: Masculino
    • Ver Perfil
Re:Funcion para mostrar cuanto tiempo ha pasado...
« Respuesta #9 en: 13 de Enero de 2010, 19:26:14 pm »
Osea haber, tengo una ligera idea. Lo que puedo hacer es crear una tabla llamada Time y que cada vez que se loge haga un Insert para crear un registro y que cada vez que haga en cerrar sesión , se guarde en la BD con un UPDATE y luego hacer un SELECT para sumar todos los tiempos que ha estado logeado ¿Sería buena idea?

#Fdo. Physlet

Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
Re:Funcion para mostrar cuanto tiempo ha pasado...
« Respuesta #10 en: 13 de Enero de 2010, 19:58:22 pm »
Osea haber, tengo una ligera idea. Lo que puedo hacer es crear una tabla llamada Time y que cada vez que se loge haga un Insert para crear un registro y que cada vez que haga en cerrar sesión , se guarde en la BD con un UPDATE y luego hacer un SELECT para sumar todos los tiempos que ha estado logeado ¿Sería buena idea?
Lo que puedes hacer es que primero verifiques si existe el usuario en la tabla time, si existe suma todos los valores y updateas la fila y si no existe lo insertas. Tambien la tuya puede funcionar.
Mixtiqueros.net

<?PHP
define
(_miNombre, &#39;Focux&#39;);
if(_miNombre == &#39;Focux&#39;): printf(&#39;%s es un programador avanzado&#39;, _miNombre); else: printf(&#39;Tu no eres %s&#39;, _miNombre); endif;
?>

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Re:Funcion para mostrar cuanto tiempo ha pasado...
« Respuesta #11 en: 13 de Enero de 2010, 21:42:58 pm »
Esto deberias de ponerlo en un tema aparte, o en el k colocaste en PHP...
Pero, respecto a tu problema, al logearse deberias de introducir en la db en una tabla conectados:
user
time

Es obvio k se guarda, no?
Luego, incluyes un archivo en cada pagina k recorre con while cada resultado y a los k esten desconectados (a pasado X tiempo sin refrescar este archivo, ahora viene) se les suma este tiempo k tu eliges (si son 5 minutos pues al user le sumas 5*60 = 300 y borras el registro)

En este archivo, tambien aces update al user con los segundos k an pasado (time()-$row['time']) y actualizas en la tabla conectados...

Desconectado chihue

  • PHPero Master
  • ******
  • Mensajes: 1.118
  • Karma: 43
  • Sexo: Masculino
  • 8 dias
    • Ver Perfil
    • Minichat con todo incluido
Re:Funcion para mostrar cuanto tiempo ha pasado...
« Respuesta #12 en: 14 de Enero de 2010, 22:34:30 pm »
Buenas phperos  :D Os voy a enseñar como mostrar cuanto tiempo ha pasado desde una determinada fecha (en formato time) en palabras. Esto se puede usar para mostrar hace cuanto tiempo fue la ultima vez que un usuario ha estado online o para lo que nos venga en gana.

Esta funcion ha sido creada 100% por mi en una tarde de aburrimiento :-[

function transcurido($time) {
$transcurido time()-$time;
$tc[&#39;minutos&#39;] = @$transcurido/60;
$tc[&#39;horas&#39;] = @$transcurido/3600;
$tc[&#39;dias&#39;] = @$transcurido/86400;
$tc[&#39;meses&#39;] = @$transcurido/&#39;2629743,83&#39;;
$tc[&#39;años&#39;] = @$transcurido/31556926;
$plu[&#39;minutos&#39;] = (intval($tc[&#39;minutos&#39;])==1) ? NULL : &#39;s&#39;;
$plu[&#39;horas&#39;] = (intval($tc[&#39;horas&#39;])==1) ? NULL : &#39;s&#39;;
$plu[&#39;dias&#39;] = (intval($tc[&#39;dias&#39;])==1) ? NULL : &#39;s&#39;;
$plu[&#39;meses&#39;] = (intval($tc[&#39;meses&#39;])==1) ? NULL : &#39;s&#39;;
$plu[&#39;años&#39;] = (intval($tc[&#39;años&#39;])==1) ? NULL : &#39;s&#39;;
$frase = ($transcurido<60 AND $transcurido>15) ? &#39;menos de un minuto&#39; : $frase;
$frase = ($transcurido>60 AND $transcurido<3600) ? intval($tc[&#39;minutos&#39;]).&#39; minuto&#39;.$plu[&#39;minutos&#39;] : $frase;
$frase = ($transcurido>3600 AND $transcurido<86400) ? intval($tc[&#39;horas&#39;]).&#39; hora&#39;.$plu[&#39;horas&#39;] : $frase;
$frase = ($transcurido>86000 AND $transcurido<&#39;2629743,83&#39;) ? intval($tc[&#39;dias&#39;]).&#39; dia&#39;.$plu[&#39;dias&#39;] : $frase;
$frase = ($transcurido>&#39;2629743,83&#39; AND $transcurido<31556926) ? intval($tc[&#39;meses&#39;]).&#39; mese&#39;.$plu[&#39;meses&#39;] : $frase;
$frase = ($transcurido>31556926 AND $transcurido<315569260) ? intval($tc[&#39;años&#39;]).&#39; año&#39;.$plu[&#39;años&#39;] : $frase;
$frase = ($transcurido>3155692600) ? &#39;mas de 10 años&#39; : $frase;
return $frase;
}

Bueno se usa de la siguiente forma:

<?php
echo &#39;Ha pasado &#39;.transcurido($fecha);
?>

En la variable fecha ponemos la fecha en formato time, por ejemplo:

<?php
$fecha 
= &#39;1257954093&#39;;
?>

En este caso nos mostrara:Ha pasado 1 dia  :P
Bueno hasta aqui este post.
Un saludo!

Ara luego lo probare i te digo