Calcular diferença entre 2 datas com PHP

Calcular diferença entre 2 datas com PHP

Olá, estou atualizando o post “Calcular Diferença Entre 2 Datas”, usaremos uma função mais simples para calcular diferença entre Anos, Meses, Dias, Horas, Minutos e Segundos.

A função recebe 3 ou 4 parâmetros.

1º  Parâmetro é o data inicial
2º  Parâmetro é a data final
3º  Parâmetro é o que se deseja calcular, ex. Ano, Mes, Dia, Hora, Minuto. Sendo o parâmetro a primeira letra ( ‘A’ = ano, ‘M’ = meses, etc …)
4º  Parâmetro é opcional e só precisa ser passado se o separador for diferente de “-” (ex: 2010/04/10 neste caso deve ser passado o separador no parâmetro).

O formato da data deve ser “Ano-Mês-Dia”, ex  2010-12-31, ou seja, $d1 = “2010-12-31”.

<?php

function diffDate($d1, $d2, $type='', $sep='-')
{
 $d1 = explode($sep, $d1);
 $d2 = explode($sep, $d2);
 switch ($type)
 {
 case 'A':
 $X = 31536000;
 break;
 case 'M':
 $X = 2592000;
 break;
 case 'D':
 $X = 86400;
 break;
 case 'H':
 $X = 3600;
 break;
 case 'MI':
 $X = 60;
 break;
 default:
 $X = 1;
 }
 return floor( ( ( mktime(0, 0, 0, $d2[1], $d2[2], $d2[0]) – mktime(0, 0, 0, $d1[1], $d1[2], $d1[0] ) ) / $X ) );
}

?>

Exemplos de uso:
Calcular diferença entre Dias (3º parâmetro D).

<?php

$d1 = "2011-01-01";
$d2 = "2011-01-10";
echo diffDate($d1,$d2,'D');

?>

Calcular diferença entre Meses (3º parâmetro M).

<?php

$d1 = "2011-01-01";
$d2 = "2011-02-01";
echo diffDate($d1,$d2,'M');

?>

Calcular diferença em Minutos (3º parâmetro MI).

<?php

$d1 = "2011-01-01";
$d2 = "2011-02-01";
echo diffDate($d1,$d2,'MI');

?>

Calcular diferença entre Anos (3º parâmetro A).

<?php

$d1 = "2010-01-01";
$d2 = "2011-01-01";
echo diffDate($d1,$d2,'A');

?>

Calcular diferença em Horas (3º parâmetro H).

<?php

$d1 = "2011-01-01";
$d2 = "2011-02-01";
echo diffDate($d1,$d2,'H');

?>

Calcular diferença em Dias com separador “/”  (3º parâmetro D e 4º parâmetro / ).

<?php

$d1 = "2011/01/01";
$d2 = "2011/02/01";
echo diffDate($d1,$d2,'D',"/");

?>

Calcular diferença em Segundos (omitindo o 3º e 4º parâmetro ).

<?php

$d1 = "2011-01-01";
$d2 = "2011-02-01";
echo diffDate($d1,$d2);

?>

Comments

  1. By Fábio Ferreira

  2. By Márcio

  3. By dayane

  4. By Leo

  5. By Samuel Peixoto

  6. By John

  7. By Guilherme

  8. By Wallace

    • By Alcides Junior

  9. By marcelo

      • By Higo rocha

    • By Felipe Oliveira

    • By Lucas

  10. By Pedro Torres

      • By Pedro Torres

  11. By Pedro Torres

    • By Pedro Torres

  12. By _JF

  13. By Maury

  14. By Felipe Oliveira

  15. By DOUGBRAG

  16. By Tiago Botega

  17. By Gustavo

%d blogueiros gostam disto: