Last active
August 29, 2015 13:57
-
-
Save fernandopetry/9448663 to your computer and use it in GitHub Desktop.
data, mostrar tempo decorrido apartir de uma data ate a data atual
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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