¿Alguna vez se preguntaron, cómo es que hacen los sitios como blogger, twitter, facebook, google y otros para poner en cada publicacion "posteado hace #$%%& minutos/días/semanas/meses/año(s)?
Par empezar deben estar seguros de que las entradas de la tabla de su base de datos, la cual quieran extraer información tenga un campo date estilo TIMESTAMP el cual tenga un registro automático para el setéo de fechas (CURRENT_TIMESTAMP).
Luego de ello, usen esta función en la cual el parámetro va a ser el valor del key que determina la fecha del Array devuelvo por la base de datos.
function PostDate ( $Date )
{
if( empty ( $Date ) ) {
return "No se puede procesar una fecha nula";
}
$Period = array (
"segundo",
"minuto",
"hora",
"día",
"semana",
"mes",
"año"
);
$Length = array (
"60",
"60",
"24",
"7",
"4.35",
"12",
);
$Now = time();
$UnixDate = strtotime ( $Date );
if ( empty ( $UnixDate ) ) {
return;
}
if ( $Now > $unix_date ) {
$Difference = $Now - $UnixDate;
$Tense = "hace aproximadamente";
}
else {
$Difference = $UnixDate - $Now;
$Tense = "desde ahora";
}
for ( $j = 0; $Difference >= $Length [ $j ] && $j < count ( $Length ) -1; $j++ ){
$Difference /= $Length [ $j ];
}
$Difference = round ( $Difference );
if( $Difference != 1 ) {
$Period [ $j ].= "s";
}
return "{$Tense} $Difference $Period [ $j ]";
}
Entones para usarla hacemos simplemente print PostDate ( $Fecha );
GroovieDev, compartiendo conocimiento. Con la tecnología de Blogger.