Criar Web, manuais e recursos para desenvolvimento web
Manuais
Programas
FAQS
Diretório
Comunidade
  Inicio > Manuais > Workshop de PHP
SEÇÕES
Manuais relacionados
+Workshop de PHP
Categorias
+Scripts em PHP

Índice do Manual Workshop de PHP
+ Gestão de ficheiros através de PHP
+ Upload de ficheiros com PHP
+ Verificar a existência de uma URL
+ Leitura sequencial de ficheiros com PHP
+ Escritura em ficheiros com PHP
+ Gestão de directórios com PHP
+ Função que escreve um campo select com valores de uma base de dados
+ Receber o último ID de uma inserção com PHP e MySQL
+ Recolher dados de um Select Multiple com PHP
+ Enviar e-mails pelo PHP
+ Validar um endereço email em PHP
+ Loop para receber todas as variáveis por POST em PHP
+ Enviar um formulário por mail com PHP
+ Paginação de resultados com PHP e MySQL
+ Usuários ativos com PHP
+ Listas de elementos com cores alternas em PHP
+ Programas de livre distribuição em PHP
+ phpMyAdmin
+ Formatação de uma cadeia
+ Cálculo dos dias de um mês em PHP
+ Contador simples para páginas PHP
+ Avaliações dos usuários em PHP
+ Rastrear os robôs de buscadores
+ Recomendar um site usando PHP
+ Criação de um log de erros
+ Comprimir página PHP
+ Contador PHP com imagens
+ Editor PHP Maguma Studio
+ SiteMaps de Google em PHP
+ Teste de velocidade de conexão à Internet
+ Mostrar Conteúdo de acordo com o país em PHP
+ Conteúdos em banco de dados com PHP
+ Problemas com as datas em timestamp Unix de PHP
+ Contar o número de linhas e caracteres em arquivo PHP
+ Transformação Doc, Odt ou Rtf para PDF
+ Preencher um arquivo RTF e gerar o PDF
+ Converter arquivos ods ou xls para pdf
+ PHP isam, ferramenta Web para Arquivos Planos
+ Undefined variable ou Undefined index
+ Agregar carinhas ao sistema
+ Paginator, script para paginação com PHP e MySQL
+ Executar scripts PHP automaticamente através do cron com CURL
+ Uso do FTP com PHP
+ Instalação de One or Zero PHP Helpdesk
+ Portal PHP Nuke
+ Gerando feed RSS de notícias em PHP
+ Blasten blt-SEARCH 1.0.5
+ Classes e Objetos em PHP
+ Recuperando a qualidade de uma imagem JPEG
+ Comprovar se existe o domínio do correio
+ Tutorial de BBCode
+ Função em PHP para o cálculo de minutos transcorridos em duas horas dadas
+ Criação de gráficos em PHP com JpGraph
+ Gerar documentos de Word RTF com PHP
+ Introdução ao Symfony
+ Arredondar decimais em PHP
+ Envio de boletins a e-mails de um banco de dados MySQL
+ Htaccess e páginas dinâmicas
+ Criando imagens com PHP
+ Programar um buscador com PHP e MySQL
+ Loop para receber todos os dados de uma fila de um recordset com PHP
+ Criação de BBcode em PHP
+ Incluir feeds em sua web em 5 passos
+ Calcular dias entre duas datas com PHP
+ Exemplo de conexão com banco de dados Access em PHP
+ Utilizar Curl para copiar uma imagem de uma web em nosso disco rígido
+ Controle da saída em PHP
+ Controle de saída em PHP II
+ Mostrar código PHP de um arquivo com cores ressaltadas
+ Propagar o identificador de sessão de PHP por cookies ou URL
+ Como converter páginas com extensão .PHP à extensão que desejar

Descrição dos capítulos

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 PHP

Script 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

Manuais relacionados com este artigo
Dentro de Workshop de PHP

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 PHP


Comentários dos visitantes
Os comentários dos visitantes são para ampliar a informação do artigo. Todos podem participar.
 Mostra-se um comentário revisto

 Comentário de arthur  16/5/07 
obrigado.. seu script me ajudou bastante! abraços




Sobre nós | Copyright | Anuncie | Entrar em contato <criarweb>

Hospedado por Hostnet Hospedagem de Sites