Annyh 4 Denunciar post Postado Julho 21, 2011 e ai pessoal, alguém sabe como devo procurar ou tem um script pronto que informa quanto tempo passou após a data atual, tipo o do orkut ou twitter.. assim: postado a 2 dia atras | postado 3 horas atras | postado 5 minutos atras.. e ai? Compartilhar este post Link para o post Compartilhar em outros sites
cage 0 Denunciar post Postado Julho 21, 2011 é só você calcular a diferença do horario q foi cadastrado com o horario atual. hora_cadastrado -> 14:30 hora_atual -> 15:00 verifica se a hora atual é igual a hora cadastrada. se for entao subtrai os minutos senao subtrai as horas e depois os minutos tempo_passado -> (hora_cadastrado - hora_atual ) Obs: voce devera tratar essa variavel, considerando os segundos, minutos e horas. Compartilhar este post Link para o post Compartilhar em outros sites
Annyh 4 Denunciar post Postado Julho 21, 2011 eu estou tentando algo, ainda não esta como eu gostaria... se alguem puder ajudar.. <?php setlocale(LC_ALL, "pt_BR", "pt_BR.iso-8859-1", "pt_BR.utf-8", "portuguese"); date_default_timezone_set('America/Sao_Paulo'); $diaH = date('d'); $mesH = date('m'); $anoH = date('Y'); $horaH = date('H'); $minH = date('i'); $segH = date('s'); $ano = 2011; $mes = 7; $dia = 21; $hora = 13; $min = 43; $seg = 21; if ($anoH > $ano) { $anos = $anoH - $ano . ' anos atras'; } elseif ($mesH > $mes) { $meses = $mesH - $mes . ' meses atras'; } elseif ($diaH > $dia) { $dias = $diaH - $dia . ' dias atras'; } elseif ($horaH > $hora) { $horas = $horaH - $hora . ' horas atras'; } elseif ($minH > $min) { $mins = $minH - $min . ' minutos atras'; } elseif ($segH > $seg) { $segs = $segH - $seg . ' segundos atras'; } else { echo 'postado agora'; } echo @$anos .'<br />'; echo @$meses .'<br />'; echo @$dias .'<br />'; echo @$horas .'<br />'; echo @$mins .'<br />'; echo @$segs .'<br />'; Compartilhar este post Link para o post Compartilhar em outros sites
cage 0 Denunciar post Postado Julho 21, 2011 Nao entendi..más não está calculando da forma correta é isso? Compartilhar este post Link para o post Compartilhar em outros sites
Annyh 4 Denunciar post Postado Julho 21, 2011 Nao entendi..más não está calculando da forma correta é isso? o resultado esta correto sim. Compartilhar este post Link para o post Compartilhar em outros sites
cage 0 Denunciar post Postado Julho 21, 2011 Opa! Ae dei uma modificada, veja se agora tá quase do jeito que você quer... $diaH = date('d'); $mesH = date('m'); $anoH = date('Y'); $horaH = date('H'); $minH = date('i'); $segH = date('s'); $ano = 2011; $mes = 7; $dia = 21; $hora = 13; $min = 43; $seg = 21; echo 'hora postada :'.$hora.':'.$min.':'.$seg; echo '<br>hora atual :'.$horaH.':'.$minH.':'.$segH.'<br>'; if ($anoH > $ano) { $retorno .= $anoH - $ano . ' anos atras'; } if ($mesH > $mes) { $retorno .= $mesH - $mes . ' meses atras'; } if ($diaH > $dia) { $retorno .= $diaH - $dia . ' dias atras'; } if ($horaH > $hora) { $retorno .= $horaH - $hora . ' horas atras, '; $retorno .= ($minH - $min)*(-1) . ' minutos e '; $retorno .= ($segH - $seg) * (-1) . ' segundos'; } echo $retorno.'<br />'; No caso eu condicionei para se hora atual for maior que a postada, más ae você acrescenta mais condições... Compartilhar este post Link para o post Compartilhar em outros sites
Annyh 4 Denunciar post Postado Julho 21, 2011 ta do jeito que eu precisava, mas não entendi porque você fez minh - min * -1. e tambem quando esta um dia atras ele só mostra 12 horas atras quando teria que mostrar 1 dia xx hora xx minutos atras. faz assim, na variável $dia coloca 20 e você vai entender. Compartilhar este post Link para o post Compartilhar em outros sites
cage 0 Denunciar post Postado Julho 21, 2011 Coloquei o (-1) para positivar o valor, senão ele retornaria um negativo ex -10; Então eu fiz uma parte pra você ter uma idéia dae é só continuar a lógica com as outras condições como ano,mes,dia. É divertido você vai curtir.. Eu vi aonde você falou..e se o valor for positivo, dae entao ficará negativo, ali é só colocar um if para ver se o valor é menor q zero dae corrigi esse bug. Compartilhar este post Link para o post Compartilhar em outros sites
Annyh 4 Denunciar post Postado Julho 21, 2011 dei uma trabalhada no script, mas não sei se esta o mais lógico possível, uma coisa que tá me chateando é o fato de por exemplo: se eu nasci em 28/12/84, era para ele mostrar 26 anos, 6 meses, sei la quantos dias, 5 horas e 2 minutos atrás. mas ele calcula o ano como sendo o ano, sem levar em conta que enquanto não chegar no mes 12 ainda não será mais um ano, isso ainda não consegui corrigir... veja como esta. <?php setlocale(LC_ALL, "pt_BR", "pt_BR.iso-8859-1", "pt_BR.utf-8", "portuguese"); date_default_timezone_set('America/Sao_Paulo'); $diaH = date('d'); $mesH = date('m'); $anoH = date('Y'); $horaH = date('H'); $minH = date('i'); $segH = date('s'); $ano = 2010; $mes = 8; $dia = 6; $hora = 10; $min = 10; $seg = 10; echo 'hora postada :'.$hora.':'.$min.':'.$seg; echo '<br>hora atual :'.$horaH.':'.$minH.':'.$segH.'<br>'; if ($anoH == $ano) { $retorno .= ''; } elseif (($anoH - 1) == $ano) { @$retorno .= ' 1 ano, '; } else { @$retorno .= $anoH - $ano . ' anos, '; } if ($mesH == $mes) { $retorno = ''; } elseif (($mesH - 1) == $mes) { @$retorno .= ' 1 mês, '; } else { @$retorno .= $mesH - $mes . ' meses, '; } if ($diaH == $dia) { $retorno = ''; } elseif (($diaH - 1) == $dia) { @$retorno .= ' 1 dia, '; } else { @$retorno .= $diaH - $dia . ' dias, '; } if ($horaH == $hora) { $retorno = ''; } elseif (($horaH - 1) == $hora) { @$retorno .= ' 1 hora, '; } else { @$retorno .= $horaH - $hora . ' horas, '; } if ($minH == $min) { $retorno = ''; } elseif (($minH - 1) == $min) { @$retorno .= ' e 1 minuto '; } else { @$retorno .= ' e ' . ($minH - $min) * -1 . ' minutos '; } echo $retorno.' atras'; Compartilhar este post Link para o post Compartilhar em outros sites
Luis Paullo 47 Denunciar post Postado Julho 21, 2011 ve c te ajuda!!! require_once("conections/PDOconfig.php"); //select no DB $sql = "SELECT * FROM tbnoticias "; $selected = $conn->query($sql); $Obj = $selected -> fetch (PDO::FETCH_OBJ); $data_bd = date('d/m/Y',strtotime($Obj ->dataAdd));//data do banco de dados $date = date('d/m/Y'); $hr_db = date('H:i',strtotime($Obj ->dataAdd));//horas do banco de dados $hora = date('H:i'); $hr_db = explode(':',$hr_db); $hora = explode(':',$hora); $data_bd= explode('/',$data_bd); $date = explode('/',$date); //resgatando os arrays $minutosAT = $hora[1]; $minutosDB = $hr_db[1]; $hrAT = $hora[0]; $hrDB = $hr_db[0]; $dAT = $date[0]; $dDB = $data_bd[0]; $anoAT = $date[2]; $anoDB = '1988';//resgatar do banco echo '<pre>'; $m = ($minutosAT - $minutosDB)*(-1).' Minutos'; $h = ($hrAT - $hrDB).' Horas'; $d = ($dAT - $dDB).' Dias'; $n = ($anoDB - $anoAT)*(-1).' Anos'; print_r($data_bd).'<br />'; //printa array data do BAnco print_r($date).'<br />'; //printa array data atual echo $m.' <br />'; //minutos passados. echo $h.'<br />'; //horas atras. echo $d.'<br />'; //dias atras echo $n.'<br />'; //ano Compartilhar este post Link para o post Compartilhar em outros sites
Annyh 4 Denunciar post Postado Julho 21, 2011 olha, consegui mas só com os dias, as horas ainda não. <?php setlocale(LC_ALL, "pt_BR", "pt_BR.iso-8859-1", "pt_BR.utf-8", "portuguese"); date_default_timezone_set('America/Sao_Paulo'); $databd1 = '1992-07-18'; $databd2 = date('Y-m-d'); $data1 = explode('-', $databd1); $data2 = explode('-', $databd2); $ano = $data2[0] - $data1[0]; $mes = $data2[1] - $data1[1]; $dia = $data2[2] - $data1[2]; if ($mes < 0) { $ano--; $mes = 12 + $mes; } if ($dia < 0) { $mes--; $dia = 30 + $dia; } if ($ano > 0) { $str_ano = $ano . ' ano'; } if ($ano > 1) { $str_ano .= 's '; } if ($mes > 0) { $str_mes .= $mes . ' mes'; } if ($mes > 1) { if ($ano > 0) { $str_ano .= ' e '; } $str_mes .= 'es'; } if ($dia > 0) { $str_dia = $dia . ' dia'; } if ($dia > 1) { if ($mes > 0) { $str_mes .= ' e '; } $str_dia .= 's'; } echo 'postado: ', @$str_ano, @$str_mes, @$str_dia, ' atrás'; Compartilhar este post Link para o post Compartilhar em outros sites
Luis Paullo 47 Denunciar post Postado Julho 21, 2011 você ja tme as data subtraida ue e so printa as variaveis no Post c v cque elimina os resultado q for igual ou menor q 0 tenta assim; acho q assim da certo =X if($n <= 0){$na = '';}else{$na= $n;}//0 mostra nd if ($d <= 0){$da = $h;}else{$da = $d;}//0 mostra Hora if ($h == 00){$ha = '';}else{$ha = $h;}//00 mostra dia echo "Postado a: $na $da $ha e $m;"; //os minutos ele sempre vai retorna Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Julho 21, 2011 Use a classe DateTime <?php $date_time = new DateTime( '2011-07-20 19:36:52' ); $diff = $date_time->diff( new DateTime( '1984-03-06 19:46:12' ) ); echo $diff->format( '%y year(s), %m month(s), %d day(s), %H hour(s), %i minute(s) and %s second(s)' ); // 27 year(s), 4 month(s), 13 day(s), 23 hour(s), 50 minute(s) and 40 second(s) ?> Compartilhar este post Link para o post Compartilhar em outros sites
Annyh 4 Denunciar post Postado Julho 22, 2011 agora adaptei para fazer o mesmo com o tempo (hora, minuto, segundo).. olhem só, ficou muito legal, espero que possa ajudar alguem... <?php setlocale(LC_ALL, "pt_BR", "pt_BR.iso-8859-1", "pt_BR.utf-8", "portuguese"); date_default_timezone_set('America/Sao_Paulo'); $databd1 = '2009-08-06-00-10-10'; $databd2 = date('Y-m-d-H-i-s'); $data1 = explode('-', $databd1); $data2 = explode('-', $databd2); $ano = $data2[0] - $data1[0]; $mes = $data2[1] - $data1[1]; $dia = $data2[2] - $data1[2]; $hora = $data2[3] - $data1[3]; $min = $data2[4] - $data1[4]; $seg = $data2[5] - $data1[5]; // configuração data if ($mes < 0) { $ano--; $mes = 12 + $mes; } if ($dia < 0) { $mes--; $dia = 30 + $dia; } if ($ano > 0) { $str_ano = $ano . ' ano'; } if ($ano > 1) { $str_ano .= 's '; } if ($mes > 0) { @$str_mes .= $mes . ' mes'; } if ($mes > 1) { if ($ano > 0) { $str_ano .= ', '; } $str_mes .= 'es'; } if ($dia > 0) { $str_dia = $dia . ' dia'; } if ($dia > 1) { if ($mes > 0) { $str_mes .= ', '; } $str_dia .= 's'; } // configuração hora if ($min < 0) { $hora--; $min = 60 + $min; } if ($seg < 0) { $min--; $seg = 60 + $seg; } if ($hora > 0) { $str_hora = $hora . ' hora'; } if ($hora > 1) { @$str_hora .= 's'; } if ($min > 0) { @$str_min .= $min . ' minuto'; } if ($min > 1) { if ($hora > 0) { @$str_hora .= ', '; } @$str_min .= 's'; } if ($seg > 0) { $str_seg = $seg . ' seg'; } if ($seg > 1) { if ($min > 0) { $str_min .= ' e '; } $str_seg .= 's'; } echo @$str_ano, @$str_mes, @$str_dia,', ', @$str_hora, @$str_min, @$str_seg, ' atrás'; Compartilhar este post Link para o post Compartilhar em outros sites