Función convertir fechas sin formato en hace cuanto tiempo
Con esta función podemos convertir fechas de manera más legible mostrando hace cuanto tiempo se creo un registro en al base de datos.
y para mostrarlas solo tenemos que pasarle una fecha timestamp sin formato:
Editado
<?php
function formato_fechas($fecha) {
if (empty($fecha)) return "No hay fecha";
$timestamp = strtotime($fecha);
if (!$timestamp) return "Error en la fecha";
$ahora = time();
$diferencia = $ahora - $timestamp;
$tiempo = $diferencia >= 0 ? "hace" : "en";
$diferencia = abs($diferencia);
// Segundos en cada unidad
$segundos_por = [
"año" => 31536000,
"mes" => 2628000,
"semana" => 604800,
"día" => 86400,
"hora" => 3600,
"minuto" => 60,
"segundo" => 1
];
foreach ($segundos_por as $unidad => $segundos) {
if ($diferencia >= $segundos) {
$valor = floor($diferencia / $segundos);
// Si supera 11 meses → contar en años
if ($unidad === "mes" && $valor > 11) {
$valor = floor($diferencia / $segundos_por["año"]);
$unidad = "año";
}
// Pluralizar correctamente
$unidad .= ($valor > 1) ? "s" : "";
return "$tiempo $valor $unidad";
}
}
return "justo ahora";
}
?>y para mostrarlas solo tenemos que pasarle una fecha timestamp sin formato:
echo formato_fechas('2025-11-02 00:27:33');esto devuelve hace X tiempo,: segundos, minutos, días, semanas, meses, años.Editado
1
Puntos
Puntos
295
Visitas
Visitas
1
Resp
Resp
Por alber hace 4 mess
Admin
Respuesta #1
cualquier duda, aquí dejo otro ejemplo https://phpres.net/php-poo/como-sacar-fechas-de-pubicacion-en-php-y-mysql
0
Puntos
Puntos
Por alber hace 4 mess
Admin