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
233
Visitas
Visitas
1
Resp
Resp
Por alber hace 1 mes
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 1 mes
Admin