<p>El siguiente código lo cree y utilizo en documentoweb para transformar un número de segundos a "hace cuanto pasó aquello".</p> <p>Me explico. Por ejemplo, un comentario que fué publicado a las 4:30 y ahora son las 4:45. Pasaron 15 minutos desde que se publicó, y eso es lo que calcula la función, el tiempo en el que fue guardado algo comparado con el tiempo del momento en que se lee.</p> <p>La función que yo llamo "hace_tiempo" está basada en la función <a title="Función time() del PHP" href="http://www.php.net/manual/en/function.time.php">time()</a> del PHP. Lo que hace time es calcular la cantidad de segundos que hay desde el primero de enero de 1970 hasta los segundos del momento en que se ejecuta. Si guardamos en nuestra base de datos esta cifra generada adjunta al comentario (siguiendo el ejemplo) podremos jugar con esta función.</p> <pre class="codigo"><span class="c1"><span class="c2"><span class="c3"><span class="c4"><span class="c5"><?php<br /><br />function hace_tiempo($valor){<br /><br />// FORMATOS:<br />// segundos desde 1970 (función time()) hace_tiempo('12313214');<br />// defecto (variable $formato_defecto) hace_tiempo('12:01:02 04-12-1999');<br />// tu propio formato hace_tiempo('04-12-1999 12:01:02 [n.j.Y H:i:s]');<br /><br />$formato_defecto="H:i:s j-n-Y";<br /><br />// j,d = día<br />// n,m = mes<br />// Y = año<br />// G,H = hora<br />// i = minutos<br />// s = segundos<br /><br />if(stristr($valor,'-') || stristr($valor,':') || stristr($valor,'.') || stristr($valor,',')){<br /><br /> if(stristr($valor,'[')){<br /> $explotar_valor=explode('[',$valor);<br /> $valor=trim($explotar_valor[0]);<br /> $formato=str_replace(']','',$explotar_valor[1]);<br /> }else{<br /> $formato=$formato_defecto;<br /> }<br /><br /> $valor = str_replace("-"," ",$valor);<br /> $valor = str_replace(":"," ",$valor);<br /> $valor = str_replace("."," ",$valor);<br /> $valor = str_replace(","," ",$valor);<br /><br /> $numero = explode(" ",$valor);<br /><br /> $formato = str_replace("-"," ",$formato);<br /> $formato = str_replace(":"," ",$formato);<br /> $formato = str_replace("."," ",$formato);<br /> $formato = str_replace(","," ",$formato);<br /><br /> $formato = str_replace("d","j",$formato);<br /> $formato = str_replace("m","n",$formato);<br /> $formato = str_replace("G","H",$formato);<br /><br /> $letra = explode(" ",$formato);<br /><br /> $relacion[$letra[0]]=$numero[0];<br /> $relacion[$letra[1]]=$numero[1];<br /> $relacion[$letra[2]]=$numero[2];<br /> $relacion[$letra[3]]=$numero[3];<br /> $relacion[$letra[4]]=$numero[4];<br /> $relacion[$letra[5]]=$numero[5];<br /><br /> $valor = mktime($relacion['H'],$relacion['i'],$relacion['s'],$relacion['n'],$relacion['j'],$relacion['Y']);<br /><br />}<br /><br />$ht = time()-$valor;<br />if($ht>=2116800){<br />$dia = date('d',$valor);<br />$mes = date('n',$valor);<br />$año = date('Y',$valor);<br />$hora = date('H',$valor);<br />$minuto = date('i',$valor);<br />$mesarray = array('','Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre');<br />$fecha = "el $dia de $mesarray[$mes] del $año";<br />}<br />if($ht<30242054.045){$hc=round($ht/2629743.83);if($hc>1){$s="es";}$fecha="hace $hc mes".$s;}<br />if($ht<2116800){$hc=round($ht/604800);if($hc>1){$s="s";}$fecha="hace $hc semana".$s;}<br />if($ht<561600){$hc=round($ht/86400);if($hc==1){$fecha="ayer";}if($hc==2){$fecha="antes de ayer";}if($hc>2)$fecha="hace $hc días";}<br />if($ht<84600){$hc=round($ht/3600);if($hc>1){$s="s";}$fecha="hace $hc hora".$s;if($ht>4200 && $ht<5400){$fecha="hace más de una hora";}}<br />if($ht<3570){$hc=round($ht/60);if($hc>1){$s="s";}$fecha="hace $hc minuto".$s;}<br />if($ht<60){$fecha="hace $ht segundos";}<br />if($ht<=3){$fecha="ahora";}<br />return $fecha;<br /><br />}<br /><br />// Ejemplos<br /><br />echo hace_tiempo("1271201645")."<br />";<br />echo hace_tiempo("20:34:05 13-04-2010")."<br />";<br />echo hace_tiempo("2010-04-13 20:34:05 [Y-n-j H:i:s]")."<br />";<br /><br />?></span></span></span></span></span></pre> <h2>Forma de utilizar la función</h2> <p>Primero que nada guardar el código integrándolo al principio del documento. Al obtener el número (el time() que se guardó con anterioridad) de la base de datos e ingresandolo en una variable ($numero) solo debemos llamar a la función para que trabaje y de el resultado de la siguiente forma:</p> <pre class="codigo"><span class="c1"><span class="c2"><span class="c3"><span class="c4"><span class="c5"><?php echo hace_tiempo($numero); ?></span></span></span></span></span></pre> <p>Así podría decir: hace 20 segundos, hace 1 minuto, hace 2 horas, hace 1 semana, hace más de 1 hora, etc. dependiendo del número. Está programado hasta 3 semanas, si el tiempo exede se muestra como "el dia X del mes X del año X". El tiempo se puede extender si se sigue la misma lógica del código PHP con un estudio de cuantos segundos hay en un mes, dos meses, un año, etc.</p> <h2>Conveniencia</h2> <p>Es muy conveniente usar esta o una función similar porque elimina la complejidad de los distintos horarios que hay en el mundo. No en todo el mundo son las 5 de la tarde, pero 5 minutos o 5 horas transcurridos son igual para todos.</p> <p>Si decimos en la web "publicado el 08 de abril del 2010 a las 5:05pm" siendo que hoy es 08 de abril del 2010 y son las 9:00pm, es mucho pero mucho mejor para el lector decirle que transcurrieron 4 horas a darle tanta molestia de leer esa catastrófica frase para compararla con la fecha actual y calcular hace cuanto tiempo pasó aquello.</p> <h3>Actualización del código</h3> <p>Ahora en el código puedes ingresarle cualquier formato de fechas. En el mismo están las instrucciones.</p>
o salir
¡Amigo! te demorarás 10 segundos en crear tu cuenta.
Crear cuenta o acceder
Nick o e-mail Es el nombre visible de tu cuenta y te servirá para acceder a ella. Permitido espacios y cualquier caracter.
Contraseña Una clave única para acceder a tu cuenta.
Transcribe el código en la dirección indicada con el fin de evitar el SPAM.
Identificación Tu identificación es el nick o el e-mail de tu cuenta.
Contraseña La clave de tu cuenta. ¿No la recuerdas?
Recordar por diez días
Disfrutarás de todos los beneficios de DocumentoWeb.
Twitter Facebook Feed RSS
www.DocumentoWeb.com - Licencia Creative Commons