Jump to content


Photo

Tempo Que Passou - Em Timestamp


  • Faça o login para participar
3 replies to this topic

#1 Faellzinhuu

Faellzinhuu

    Turista

  • Usuários
  • 47 posts
  • Sexo:Não informado

Posted 03/11/2010, 10:57

Eai galera, beleza?
Procurei no google e no fórum algo relacionado ao que eu quero, e não encontrei.

Preciso saber o tempo que passou de um certo timestamp até o timestamp atual em (anos, meses, dias, horas, segundos).
O que eu bolei foi o seguinte:

$temp = time() - $time; 
$temp_s = date("s", $temp);
if($temp >= "60"){ $temp_m = date("i", $temp)."m "; }
if($temp >= "3600"){ $temp_h = date("G", $temp)."h "; }
if($temp >= "86400"){ $temp_d = date("j", $temp)."d "; }
$return = (".$temp_d.$temp_h.$temp_m.$temp_s."s ago)";

Resultado: (20h 55m 05s ago)

Mas dessa forma ainda não calcula corretamente, alguns horários ele se "perde" (que no caso foi eu que me perdi ao montar essa gambiarra ;p)

Quem puder me ajudar, agradeço desde já! Obrigado!
Abraços!

#2 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 03/11/2010, 11:06

Dá uns exemplos de datas que ele calcula errado.

#3 Faellzinhuu

Faellzinhuu

    Turista

  • Usuários
  • 47 posts
  • Sexo:Não informado

Posted 04/11/2010, 02:04

Dá uns exemplos de datas que ele calcula errado.


são muitos horários, nao tem nem como ficar testando quais são os que são calculados errados, eu apenas quiz mostrar que dessa forma que eu fiz não funciona.
abraço!

#4 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 04/11/2010, 11:30

Fiz uns testes aqui e realmente com timestamp não vai funcionar. Mas consegui usando essa classe DateTime do PHP. Dá uma olhada:

<?

$Now = new DateTime();

$Diferenca = $Now->diff(new DateTime('2008-08-01 00:00'));

echo $Diferenca->format('%y ano, %m mes, %d dia, %h h, %i min, %s');

?>





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq