Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
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?
No exemplo q te passei ta tudo separado olha:
$time_left = $d.':'.$h.':'.$m.':'.$s;
$d = dia
$h = hora
$m = minuto
$s = segundo
>
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?
Oi!
Voce quer acrescentar tempo ao valor passado ou diminuir? :S
>
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.
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
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?
você está usando **$this** em uma função que não está dentro de uma classe.
$this é usado somente dentro de classes.
@braços
>
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.
>
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?
>
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?
>
...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?
>
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.
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
Tenho esse script... Dá pra implementar