|
|
|
||||||||||||||||||||||
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Parceiros - CSS para Web Design - S.O.S Designers - Slackware-Brasil - Crie seu Web site - Oficina da Net - Codigo Fonte.net |
Calcular dias entre duas datas com PHPScript PHP para calcular os dias de diferença que há entre duas datas. Às vezes precisamos saber os dias que transcorreram entre duas datas. Com PHP podemos fazer essa tarefa facilmente, simplesmente diminuindo o valor timestamp das duas datas e convertendo a dias. Explicaremos tudo isso passo a passo neste artigo.
O exercício é muito simples. Vamos obter os valores timestamp das duas datas. (Lembrar que os timestamp são os segundos que passaram desde zero hora de 1 de janeiro de 1970) Como os dois timestamps são uma quantidade de segundos, não temos mais que subtraí-los para obter os segundos de diferença entre as duas datas. Logo, se trataria de converter esses segundos em dias para obter o dado que estamos buscando. Vejamos então a maneira de obter um timestamp de uma data. Entre as funções de datas de PHP há várias que podem nos servir para trabalhar com timestamp, porém nós temos que utilizar uma em concreto chamada mktime(). Esta função recebe vários parâmetros: mktime ( [int hora [, int minuto [, int segundo [, int mes [, int dia [, int ano [, int es_dst]]]]]]] ) O primeiro parâmetro é a hora, logo os minutos e segundos. Logo, os meses, dias e anos. Com todos esses valores nos devolve o timestamp de uma data qualquer. Podemos omitir parâmetros e nesse caso tomará os valores da data atual do servidor. O código para obter os timestamp de um par de datas inventadas poderia ser algo como o seguinte: //defino data 1 $ano1 = 2006; $mes1 = 10; $dia1 = 2; //defino data 2 $ano2 = 2006; $mes2 = 10; $dia2 = 27; //calculo timestam das duas datas $timestamp1 = mktime(0,0,0,$mes1,$dia1,$ano1); $timestamp2 = mktime(0,0,0,$mes2,$dia2,$ano2); Logo, poderíamos subtrair os timestamp e converter os segundos em dias: //diminuo a uma data a outra $segundos_diferenca = $timestamp1 - $timestamp2; //echo $segundos_diferenca; //converto segundos em dias $dias_diferenca = $segundos_diferenca / (60 * 60 * 24); Para converter os segundos em dias, como se pode observar no código, há que dividir entre o número de segundos de um dia. (60 segundos de um minuto, pelos 60 minutos de uma hora, pelas 24 horas de um dia). Agora também, com um código como o anterior, o valor dos dias de diferença pode ter decimais e ser negativo. Nós queremos um número de dias inteiro e positivo. Então, ainda teremos que fazer duas operações matemáticas. Primeiro, tirar o sinal negativo e logo tirar os decimais. //obtenho o valor absoulto dos dias (tiro o possível sinal negativo) $dias_diferenca = abs($dias_diferenca); //tiro os decimais aos dias de diferença $dias_diferenca = floor($dias_diferenca); Tiramos os decimais simplesmente arredondando para baixo. Visto que se tivermos um número decimal de dias é porque não chegou a um dia completa e não nos interessa contabilizá-lo. O código completo pode ser visto a seguir: <? //defino data 1 $ano1 = 2006; $mes1 = 10; $dia1 = 2; //defino data 2 $ano2 = 2006; $mes2 = 10; $dia2 = 27; //calculo timestam das duas datas $timestamp1 = mktime(0,0,0,$mes1,$dia1,$ano1); $timestamp2 = mktime(4,12,0,$mes2,$dia2,$ano2); //diminuo a uma data a outra $segundos_diferenca = $timestamp1 - $timestamp2; //echo $segundos_diferenca; //converto segundos em dias $dias_diferenca = $segundos_diferenca / (60 * 60 * 24); //obtenho o valor absoluto dos dias (tiro o possível sinal negativo) $dias_diferenca = abs($dias_diferenca); //tiro os decimais aos dias de diferenca $dias_diferenca = floor($dias_diferenca); echo $dias_diferenca; ?>
Autoria e outras referências sobre este artigo Dentro deste artigo: + 1 manual relacionado + 1 categoria relacionada + 1 Comentário (Acrescentar)
Manuais relacionados com este artigo Dentro de Workshop de PHP Anterior: Incluir feeds em sua web em 5 passos Categorias relacionadas Através das categorias do nosso diretório podem ser encontrados outros tipos de recursos relacionados com este artigo: + Entrar em Scripts em PHPComentários dos visitantes
|
|||||||||||||
| Sobre nós | Copyright | Anuncie | Entrar em contato | <criarweb> |