Skip to content

Instantly share code, notes, and snippets.

@fernandopetry
Last active August 29, 2015 13:57
Show Gist options
  • Save fernandopetry/9448663 to your computer and use it in GitHub Desktop.
Save fernandopetry/9448663 to your computer and use it in GitHub Desktop.
data, mostrar tempo decorrido apartir de uma data ate a data atual
<?php
/*
Função bem util desenvolvida por mim (https://plus.google.com/u/0/+JhordanLima/post) para quem está fazendo um sistema de comentários ou algo do tipo para seu site em php.
Ela trabalha com tempo, para deixar mais dinâmico, dizendo a quanto tempo foi enviado a mensagem. Porem para funcionar, a data precisa está de acordo com o formato (Ano/Mês/Dia Hora:Minuto:Segundo), formato padrão do datatime do banco de dados MySql.
Obrigado a Thiago Belem pelo tutorial sobre trabalhar datas.
http://blog.thiagobelem.net/trabalhando-com-datas-no-php/
Jhordan Lima || http://fb.com/JhorZyto
*/
function tempo_decorrido($data)//criar função
{
date_default_timezone_set("Brazil/East");//definir hora do servidor para horario do Brasil
$timestamp_atual = time();//Puxar data-hora atual e transformar tudo em segundo contando desde 1970
$timestamp = strtotime($data);//Puxar data-hora definido e transformar tudo em segundo contando desde 1970
$hora = (int)$timestamp_atual-(int)$timestamp;//Fazer a subtração do atual para o definido, para saber a diferença e trabalhar com ela.
if($hora < 60) // veriicar se a diferença é menor que 60segundos
{
$resultado = "Enviada agora";// se for menor ele retornará com a mensagem ao lado
}
elseif($hora < 3600) // veriicar se a diferença é menor que 3600 segundos, ou melhor dizendo, se é menor que 1 hora
{
$hora = $hora/60; // Se for menor que os 3600, ele fará uma divisão dos 3600segundos por 60 para retornar em minutos
if((int)$hora < 2)// Se a divisão for menor que dois, ele retornará no singular
{
$resultado = "Há ".(int)$hora." minuto"; // Mensagem de retorno
}else{ //Caso for maior ou igual a dois, ele retornará no plural
$resultado = "Há ".(int)$hora." minutos"; // Mensagem de retorno
}
}
elseif($hora < 86400) // veriicar se a diferença é menor que 86400 segundos, ou melhor dizendo, se é menor que 24 horas/1dia
{
$hora = $hora/60/60; // Se for menor que os 86400, ele fará uma divisão dos 86400segundos por 60 duas vezes para retornar em horas
if((int)$hora < 2) // Se a divisão for menor que dois, ele retornará no singular
{
$resultado = "Há ".(int)$hora." hora";// Mensagem de retorno
}else{ //Caso for maior ou igual a dois, ele retornará no plural
$resultado = "Há ".(int)$hora." horas";// Mensagem de retorno
}
}
elseif($hora < 604800)
{
$hora = $hora/60/60/24; // Se for menor que os 604800, ele fará uma divisão dos 604800segundos por 60 duas vezes e por 24 para retornar em dias
if((int)$hora < 2)// Se a divisão for menor que dois, ele retornará no singular
{
$resultado = "Há ".(int)$hora." dia";// Mensagem de retorno
}else{ //Caso for maior ou igual a dois, ele retornará no plural
$resultado = "Há ".(int)$hora." dias";// Mensagem de retorno
}
}
else //Caso nenhuma das condições acima for aceita, este caso será chamado
{
$data = date('d/m/Y', $timestamp); //Puxar data definida
$hora = date('H:i:s', $timestamp); //Puxar hora definida
$resultado = $data." às ".$hora; // Fazer a junção dos dois, não coloquei junto pois o às estava chamando segundos.
}
return $resultado; // Exibir o resultado final
}
/*Vejam uma demostração da função.*/
$teste = '2014-03-08 19:00:00'; // Data e hora qualquer para fazer um teste
echo "O tempo definido foi " . tempo_decorrido($teste); //Chamando a função
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment