Formato de data de 06-17-2022 para há 1 hora

  • Autor Autor satanson
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
satanson

satanson

Gamma
Verificado
Verificación en dos pasos activada
Usuário com poucas negociações! Use sempre o saldo do 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 edição:
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
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.
 

Tópicos similares

E
Respostas
3
Visitas
510
Scattercito
Scattercito
Voltar
Topo