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.
<?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
295
Visitas
1
Resp
Por alber hace 4 mess
Admin
Respuesta #1
0
Puntos
Por alber hace 4 mess
Admin
Para comentar Inicia sesión o Regístrate
Phpres 2025@ All rights reserved.
Utilizamos cookies para mejorar la navegación en el sitio. Más información Aceptar