Cyberoma 5 Denunciar post Postado Abril 14, 2012 ELE FUNCIONA MAS NÃO SEI SE ESSA É A MELHOR FORMA, SE PODE OCORRER FALHAS.. O que eu quero: Mostre somente minutos, caso passe 59 minutos, mostre somente as horas, caso passe 24 horas, mostre somente dias. <?php $date1 = date("Y-m-d H:i:s"); $date2 = "2012-04-13 17:31:00"; $diff = abs(strtotime($date2) - strtotime($date1)); $years = floor($diff / (365*60*60*24)); $months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24)); $days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24)); $hours = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24)/ (60*60)); $minuts = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24 - $hours*60*60)/ 60); if($months == 1){ printf("%d mês", $months); printf(" e %d dias", $days); }else if($months > 1){ printf("%d meses", $months); printf(" e %d dias", $days); }else if($days == 1){ printf("%d dia", $days); }else if($days > 1){ printf("%d dias", $days); }else if($hours == 1){ printf("%d hora", $hours); }else if($hours > 1){ printf("%d horas", $hours); }else if($minuts < 2){ printf("%d minuto", $minuts); }else{ printf("%d minutos", $minuts); } ?> Alguem pode ajudar? OBS: Topico ja estava na terceira pagina e sem resposta. Compartilhar este post Link para o post Compartilhar em outros sites
cristian_web 15 Denunciar post Postado Abril 15, 2012 $inicio = date("d/m/Y H:i:s"); $fim = '25/06/2012 18:54:00'; $epoch_1 = mktime(18,00,00,04,28,2012); $epoch_2 = mktime(); $s = $epoch_1 - $epoch_2; $d = floor($s/86400); $s -= $d * 86400; $h = floor($s/3600); $s -= $h * 3600; $m = floor($s/60); $s -= $m * 60; if($s<10){ $s = '0'.$s; } if($m<10){ $m = '0'.$m; } if($h<10){ $h = '0'.$h; } if($d<10){ $d = '0'.$d; } $time_left = $d.':'.$h.':'.$m.':'.$s; Tenho esse script... Dá pra implementar Compartilhar este post Link para o post Compartilhar em outros sites
Cyberoma 5 Denunciar post Postado Abril 16, 2012 Pessoal achei esse codigo, ele funciona.. Porem eu quero fazer alguns if, para mostrar somente os minutos, as horas e os dias.. Aki ele ta mostrando tudo de vez.. Mas nao sei onde vou colocar os if's <?php function datediff($start, $end="NOW") { $sdate = strtotime($start); $edate = strtotime($end); $time = $edate - $sdate; // Days + Hours + Minutes $pday = ($edate - $sdate) / 86400; $preday = explode('.',$pday); $phour = $pday-$preday[0]; $prehour = explode('.',$phour*24); $premin = ($phour*24)-$prehour[0]; $min = explode('.',$premin*60); $presec = '0.'.$min[1]; $sec = $presec*60; $timeshift = $preday[0].' days '.$prehour[0].' hrs '.$min[0].' min '.round($sec,0).' sec '; return $timeshift; } // EXAMPLE: $start_date = "15-04-2012 19:50:00"; $end_date = date("15-04-2012 H:i:s"); echo datediff($start_date, $end_date); ?> Alguem pode ajudar? Compartilhar este post Link para o post Compartilhar em outros sites
cristian_web 15 Denunciar post Postado Abril 16, 2012 No exemplo q te passei ta tudo separado olha: $time_left = $d.':'.$h.':'.$m.':'.$s; $d = dia $h = hora $m = minuto $s = segundo Compartilhar este post Link para o post Compartilhar em outros sites
Cyberoma 5 Denunciar post Postado Abril 16, 2012 No exemplo q te passei ta tudo separado olha: $time_left = $d.':'.$h.':'.$m.':'.$s; $d = dia $h = hora $m = minuto $s = segundo Cristian Obrigado pela ajuda, mas não entendi esse codigo: $inicio = date("d/m/Y H:i:s"); $fim = '25/04/2012 18:54:00'; $epoch_1 = mktime(18,00,00,04,28,2012); $epoch_2 = mktime(); $s = $epoch_1 - $epoch_2; $d = floor($s/86400); $s -= $d * 86400; $h = floor($s/3600); $s -= $h * 3600; $m = floor($s/60); $s -= $m * 60; if($s<10){ $s = '0'.$s; } if($m<10){ $m = '0'.$m; } if($h<10){ $h = '0'.$h; } if($d<10){ $d = '0'.$d; } $time_left = $d.':'.$h.':'.$m.':'.$s; echo $time_left; Ele ta imprimindo 12:08:26:48 E ele estár regredindo o tempo a diferença, quero que ele va aumentando. Voce me ajudar? Compartilhar este post Link para o post Compartilhar em outros sites
InterPlanet 7 Denunciar post Postado Abril 16, 2012 Oi! Voce quer acrescentar tempo ao valor passado ou diminuir? :S Compartilhar este post Link para o post Compartilhar em outros sites
Cyberoma 5 Denunciar post Postado Abril 16, 2012 Oi! Voce quer acrescentar tempo ao valor passado ou diminuir? :S Eu quero somente a diferença entre uma data(que vai vir do banco de dados) e a data atual. Então a diferença vai aumentar com o passar do tempo. Compartilhar este post Link para o post Compartilhar em outros sites
hufersil 145 Denunciar post Postado Abril 16, 2012 hum... DateTime não ajuda naquela parte de calculos? $hoje = new DateTime(); $evento = new DateTime('2012-07-01 17:34:00'); $diff = $hoje->diff($evento); Leia a documentação para mais detalhes deste método ;) @braços Compartilhar este post Link para o post Compartilhar em outros sites
Cyberoma 5 Denunciar post Postado Abril 16, 2012 Hufersil, peguei o codigo do php 5.2 que é a minha versao. <?php function ago($dt) { $dt = date_parse($dt); $now = date_parse(date("Y-m-d H:i:s")); $suffix = " ago"; if ($now['year'] != $dt['year']) return $this->pluralize($now['year'] - $dt['year'], "year") . $suffix; if ($now['month'] != $dt['month']) return $this->pluralize($now['month'] - $dt['month'], "month") . $suffix; if ($now['day'] != $dt['day']) return $this->pluralize($now['day'] - $dt['day'], "day") . $suffix; if ($now['hour'] != $dt['hour']) return $this->pluralize($now['hour'] - $dt['hour'], "hour") . $suffix; if ($now['minute'] != $dt['minute']) return $this->pluralize($now['minute'] - $dt['minute'], "minute") . $suffix; if ($now['second'] != $dt['second']) return $this->pluralize($now['second'] - $dt['second'], "second") . $suffix; return "just now"; } private function pluralize($count, $text) { return $count . (($count == 1) ? (" $text") : (" ${text}s")); } $date = ("16-04-2012 09:00:00"); echo ago($date); ?> Porem estar dando um erro Fatal error: Using $this when not in object context in C.... Nessa linha: if ($now['hour'] != $dt['hour']) return $this->pluralize($now['hour'] - $dt['hour'], "hour") . $suffix; O que eu fiz de errado? Compartilhar este post Link para o post Compartilhar em outros sites
hufersil 145 Denunciar post Postado Abril 16, 2012 você está usando $this em uma função que não está dentro de uma classe. $this é usado somente dentro de classes. @braços Compartilhar este post Link para o post Compartilhar em outros sites
Cyberoma 5 Denunciar post Postado Abril 16, 2012 você está usando $this em uma função que não está dentro de uma classe. $this é usado somente dentro de classes. @braços Pronto deu certooo, tirei o $this-> Finalmenteeeee.. Obrigado hufersil E a todos que tentaram me ajudar. Compartilhar este post Link para o post Compartilhar em outros sites
InterPlanet 7 Denunciar post Postado Abril 16, 2012 Eu quero somente a diferença entre uma data(que vai vir do banco de dados) e a data atual. Então a diferença vai aumentar com o passar do tempo. Deixa ver se entendi: é pra saber quanto tempo passou desde a data do db (mais antiga) ate hoje, agora? Compartilhar este post Link para o post Compartilhar em outros sites
Cyberoma 5 Denunciar post Postado Abril 16, 2012 Deixa ver se entendi: é pra saber quanto tempo passou desde a data do db (mais antiga) ate hoje, agora? Isso aí.. xD Pessoal aproveitando, o date ele pega data e horario da maquina certo? mas quando eu hospedar meu site, quero ele pegue o horario do servidor da hospedagem.. Se não o povo muda o horario do PC e pronto.. Uso o que? Compartilhar este post Link para o post Compartilhar em outros sites
InterPlanet 7 Denunciar post Postado Abril 16, 2012 ...o date ele pega data e horario da maquina certo? mas quando eu hospedar meu site, quero ele pegue o horario do servidor da hospedagem.. Se não o povo muda o horario do PC e pronto.. Uso o que? utilize isto no inicio do seu codigo : <?php date_default_timezone_set('America/Recife'); Substitua America/Recife pelo mais aproprado ao seu horario, uma lista dos valores possiveis pode ser encontrada aqui: TimeZones Quanto a funcao ainda precisa de ajuda? Compartilhar este post Link para o post Compartilhar em outros sites
Cyberoma 5 Denunciar post Postado Abril 16, 2012 utilize isto no inicio do seu codigo : <?php date_default_timezone_set('America/Recife'); Substitua America/Recife pelo mais aproprado ao seu horario, uma lista dos valores possiveis pode ser encontrada aqui: TimeZones Quanto a funcao ainda precisa de ajuda? Não, a função funcionou perfeitamente.. Obrigado pela dica Interplanet. Compartilhar este post Link para o post Compartilhar em outros sites
JoaoGusmao 2 Denunciar post Postado Abril 16, 2012 Eita... eu estava precisando para HOJE de um script que pudesse ser usado várias vezes ao mesmo tempo... Usei o que o Cyberoma Passou, e adicionei: if($min[0] < "1") { return round($sec,0)." Segundos atrás"; } if($min[0] >= "1") { return $min[0]."Minutos atrás"; } Brigadão :D Compartilhar este post Link para o post Compartilhar em outros sites