Formato de fecha de 06-17-2022 a hace 1 hora

  • Autor Autor satanson
  • Fecha de inicio Fecha de inicio
satanson

satanson

Gamma
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Hola amigos tengo una consulta, como puedo convertir la fecha de formato normal 06-17-2022 a hace 1 minutos, hace 1 hora, hace 3 horas, etc... y cuando halla pasado un dia salga el formato normal. Es para mybb pero es general de php el formato de mybb esta en -> https://prnt.sc/G6r3sWqT2HjA y lo muestra -> https://prnt.sc/ZsUN2ANcSwC0 despues que pase un dia aparecen -> https://prnt.sc/SoaP_4kxMyik
Les dejare el codigo php que pude hacer cargando los datos directo de la base de datos:
PHP:
$uids = $_GET['uid'];
$query = $db->query("
            SELECT mybb_posts.username, mybb_posts.dateline, mybb_posts.fid,mybb_forums.fid,mybb_forums.name,mybb_posts.message,mybb_posts.subject,mybb_posts.tid FROM mybb_posts,mybb_forums
            where
            mybb_posts.fid = mybb_forums.fid
            and
            mybb_posts.uid = '$uids'
            and
            mybb_posts.replyto = 0
            and
            mybb_forums.lastposttid != ''
            ORDER BY mybb_posts.dateline DESC LIMIT 8
        ");


        while($fila = $db->fetch_array($query))
        {
          
            $msg = $fila['message'];
            $id = $fila['tid'];
            $title = $fila['subject'];
            $fname = $fila['name'];
            $fid = $fila['fid'];
            $output = preg_match_all('/([-a-z0-9_\/:.]+\.(jpg|jpeg|png))/i', $msg, $matches);
            $date = my_date($mybb->settings['dateformat'], $fila['dateline'], '', false);
            $user = $fila['username'];
            $img .= "<tr><td class='trow1'>
            <div style='float:left;position:relative;width: 50px;overflow:show'><a href='showthread.php?tid=".$id."' title='".$title."'><center><img title='".$title."' src=".$matches [1] [0]." style='height: 50px;'></center></a></div>
            <div style='float:left;position:relative;margin:8px;'><a href='showthread.php?tid=".$id."' title='".$title."'>".$title."</a><br>
            Publicado en: ".$date."
            </div>
                </td></tr>
                    "; 
        }
 
Última edición:
una buena, yo la uso, lo que si tendrias que pasarle primero la fecha a time para que te funcione. pero en tu caso seria directo ya que lo tienes en time

ejemplo de
PHP:
$date = '2022-02-19 21:30:00';
echo ago(strtotime($date))

PHP:
function ago__($time)
{
    $periodos   = array("second", "minute", "hour", "day", "week", "month", "year", "decade");
    $duraciones = array("60", "60", "24", "7", "4.35", "12", "10");
    $now        = time();
    $diferencia = $now - $time;

    for ($j = 0; $diferencia >= $duraciones[$j] && $j < count($duraciones) - 1; $j++) {
        $diferencia /= $duraciones[$j];
    }
    $diferencia = round($diferencia);

    $diferencia != 1 ? $j != 5 ? $periodos[$j] .= "s" : $periodos[$j] .= "es" : null;

    if ($diferencia > 1) {

        $periodos[$j] .= "s";

    }

    return "ago $diferencia $periodos[$j]";
}
 
una buena, yo la uso, lo que si tendrias que pasarle primero la fecha a time para que te funcione. pero en tu caso seria directo ya que lo tienes en time

ejemplo de
PHP:
$date = '2022-02-19 21:30:00';
echo ago(strtotime($date))

PHP:
function ago__($time)
{
    $periodos   = array("second", "minute", "hour", "day", "week", "month", "year", "decade");
    $duraciones = array("60", "60", "24", "7", "4.35", "12", "10");
    $now        = time();
    $diferencia = $now - $time;

    for ($j = 0; $diferencia >= $duraciones[$j] && $j < count($duraciones) - 1; $j++) {
        $diferencia /= $duraciones[$j];
    }
    $diferencia = round($diferencia);

    $diferencia != 1 ? $j != 5 ? $periodos[$j] .= "s" : $periodos[$j] .= "es" : null;

    if ($diferencia > 1) {

        $periodos[$j] .= "s";

    }

    return "ago $diferencia $periodos[$j]";
}
una buena, yo la uso, lo que si tendrias que pasarle primero la fecha a time para que te funcione. pero en tu caso seria directo ya que lo tienes en time

ejemplo de
PHP:
$date = '2022-02-19 21:30:00';
echo ago(strtotime($date))

PHP:
function ago__($time)
{
    $periodos   = array("second", "minute", "hour", "day", "week", "month", "year", "decade");
    $duraciones = array("60", "60", "24", "7", "4.35", "12", "10");
    $now        = time();
    $diferencia = $now - $time;

    for ($j = 0; $diferencia >= $duraciones[$j] && $j < count($duraciones) - 1; $j++) {
        $diferencia /= $duraciones[$j];
    }
    $diferencia = round($diferencia);

    $diferencia != 1 ? $j != 5 ? $periodos[$j] .= "s" : $periodos[$j] .= "es" : null;

    if ($diferencia > 1) {

        $periodos[$j] .= "s";

    }

    return "ago $diferencia $periodos[$j]";
}
Gracais por tu respuesta, lo coloque de la siguiente manera, pero no me funciona la web se cae y disculpa mi ignorancia. Puedes decirme que estoy haciendo mal?
PHP:
    $date = $fila['dateline'];
            function ago($time)
{
    $periodos   = array("second", "minute", "hour", "day", "week", "month", "year", "decade");
    $duraciones = array("60", "60", "24", "7", "4.35", "12", "10");
    $now        = time();
    $diferencia = $now - $time;

    for ($j = 0; $diferencia >= $duraciones[$j] && $j < count($duraciones) - 1; $j++) {
        $diferencia /= $duraciones[$j];
    }
    $diferencia = round($diferencia);

    $diferencia != 1 ? $j != 5 ? $periodos[$j] .= "s" : $periodos[$j] .= "es" : null;

    if ($diferencia > 1) {

        $periodos[$j] .= "s";

    }

    return "ago $diferencia $periodos[$j]";
}
            echo ago(strtotime($date));
 
Gracais por tu respuesta, lo coloque de la siguiente manera, pero no me funciona la web se cae y disculpa mi ignorancia. Puedes decirme que estoy haciendo mal?
PHP:
    $date = $fila['dateline'];
            function ago($time)
{
    $periodos   = array("second", "minute", "hour", "day", "week", "month", "year", "decade");
    $duraciones = array("60", "60", "24", "7", "4.35", "12", "10");
    $now        = time();
    $diferencia = $now - $time;

    for ($j = 0; $diferencia >= $duraciones[$j] && $j < count($duraciones) - 1; $j++) {
        $diferencia /= $duraciones[$j];
    }
    $diferencia = round($diferencia);

    $diferencia != 1 ? $j != 5 ? $periodos[$j] .= "s" : $periodos[$j] .= "es" : null;

    if ($diferencia > 1) {

        $periodos[$j] .= "s";

    }

    return "ago $diferencia $periodos[$j]";
}
            echo ago(strtotime($date));
$date = $fila['dateline']; que formato te imprime???
 
$date = $fila['dateline']; que formato te imprime???
Con esta linea de codigo saco la fecha en formato 01-23-22
PHP:
my_date($mybb->settings['dateformat'], $fila['dateline'], '', false);
 
tienes que enviarle el parametro este 1655362111
al momento de llamarle la funcion para que funcione, prueba y me dices.
No me lo vas a creer, mientras estaba esperando tu respuesta me puse a revisar el plugins Latest Posts on sidebar y me encontre con esta linea de codigo:
PHP:
my_date("relative", $thread['lastpost']);

La cual modifique de esta manera:
PHP:
$date = my_date("relative", $fila['dateline']);

Y adivina que? https://prnt.sc/m1oeKrurERTF funciona xD.

Muchas gracias de igual forma.
 

Temas similares

tiernocorazon
Respuestas
17
Visitas
922
BigMan
B
E
Respuestas
3
Visitas
510
Scattercito
Scattercito
Atrás
Arriba