Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Sempre utilizei a função mktime para pegar um timediff entre uma data e outra.
Porem ontem fiz varias validações e acho que encontrei um bug na função mktime quando se faz calculos no mes de fevereiro..
No ano de 2008 fevereiro teve 29 dias então o total de horas que fevereiro teve foi (29*24) = 696 quando fiz o calculo com a função mktime retornou 697 uma hora a mais e isso so acontece no mes de fevereiro. Pensei que fosse por causa do ano-bissexto porem fiz testes com anos que não foram bissextos..segue exemplos.
<?php
$dataIni = array('2008','02','01');#Y m d
$dataFim = array('2008','03','01');#Y m d
$timeStampIni = mktime(0,0,0,$dataIni[1],$dataIni[2],$dataIni[0]);
$timeStampFim = mktime(0,0,0,$dataFim[1],$dataFim[2],$dataFim[0]);
$segundosEntreAsDatas = ($timeStampFim-$timeStampIni);
$horas = (($segundosEntreAsDatas/60)/60);
echo "Ano bissexto Fevereiro->Horas->".$horas." teria que ser 696 \n";
$dataIni = array('2007','02','01');#Y m d
$dataFim = array('2007','03','01');#Y m d
$timeStampIni = mktime(0,0,0,$dataIni[1],$dataIni[2],$dataIni[0]);
$timeStampFim = mktime(0,0,0,$dataFim[1],$dataFim[2],$dataFim[0]);
$segundosEntreAsDatas = ($timeStampFim-$timeStampIni);
$horas = (($segundosEntreAsDatas/60)/60);
echo "Ano não bissexto Fevereiro->Horas->".$horas." teria que ser 672 \n";
?>Estou fazendo algo errado ou é um bug do PHP?Carregando comentários...