Formato fecha
2 seguidores
Aupa
Como se hace para que, como en este foro, el formato de la fecha se dé por el tiempo que a pasado desde que se publico, en horas, días, fecha,....
Mil gracias.
Aupa
Como se hace para que, como en este foro, el formato de la fecha se dé por el tiempo que a pasado desde que se publico, en horas, días, fecha,....
Mil gracias.
Seguro que tienes mucho que decir, te estamos esperando.
saioa
Ohhh, muchas gracias.
Lo mirare y lo intentare aplicar a mi foro. Por cierto que el anterior mensaje era mio.
xoan
simplemente seria ir comparando el tiempo transcurrido y ver de que es multiplo:
<code><?
function hace($dato) {
$actual = time() ;
$transcurrido = $actual - $dato ;
if ($transcurrido >= (3600 * 24 * 365)) {
$med = "año/s" ;
$fecha = floor($transcurrido / (3600 * 24 * 365)) ;
} else if ($transcurrido >= (3600 * 24 * 30)) {
$med = "mes/es" ;
$fecha = floor($transcurrido / (3600 * 24 * 30)) ;
} else if ($transcurrido >= (3600 * 24 * 7)) {
$med = "sem" ;
$fecha = floor($transcurrido / (3600 * 24 * 7)) ;
} else if ($transcurrido >= (3600 * 24)) {
$med = "dia/s" ;
$fecha = floor($transcurrido / (3600 * 24)) ;
} else if ($transcurrido >= 3600) {
$med = "hora/s" ;
$fecha = floor($transcurrido / 3600) ;
} else if ($transcurrido >= 60) {
$med = "min" ;
$fecha = floor($transcurrido / 60) ;
} else {
$med = "seg" ;
$fecha = $transcurrido ;
}
return "hace&nbsp;$fecha$med" ;
}
?></code>
el dato que le pasamos seria ela fecha en formato UNIX (segundos transcurridos desde el 1 de enero de 1970) que se obtiene con la funcion time();
ese dato es guardado en cuaquier soporte (txt, db, xml...) y recuperado como argumento de la funcion; luego se lo restamos al actual y vamos comparando el resultado ;)
Redondeando con floor(); lo que obtenemos es el valor entero inferior mas cercano al resultado de la division, asi es un poco mas aproximado. No se si se podra simplificar la funcion, pero asi es totalmente... <em>funcional</em>, valga la redundancia ;)
Por cierto, para que imprima el resultado tienes que hacer:
<code><?
echo hace($fecha_a_formatear);
?></code>