Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Oi, pessoal!
Estou novamente com dúvidas a respeito do cálculo de datas. Tenho a seguinte função que calcula a idade de usuários a partir de sua data de nascimento, que está gravada em um banco de dados, no formato YYYY-mm-dd:
**PHP** [/tr][tr]$idade = implode('/',array_reverse(split('[-]',$idade)));
function calculaDia($iMes, $iDia, $iAno) {
$iTimeStamp = (mktime(0,0,0) - 86400) - mktime(0, 0, 0, $iMes, $iDia, $iAno);
$iDias = $iTimeStamp / 86400;
$iAnos = floor($iDias);
$iAnos = $iAnos / 365;
return intval($iAnos);
}
$data=$idade;
$ndata=explode("/",$data);
$idade2 = calculaDia($ndata[1],$ndata[0],$ndata[2]);
[/tr]
Acontece que eu notei que ela não funciona para datas de nascimento abaixo de 1970. Por exemplo, um usuário nascido em 1978, aparece normalmente com 26 anos. Já um usuário nascido em 1945 aparece com 34 anos (2004-1970) e uma mensagem mktime(): Windows does not support negative values for this function.
Pesquisei no php.net e descobri que a função mktime tem essa limitação. E agora? O site sugere usar uma função adodb_mktime(), mas eu não entendi direito como devo implementá-la. Alguém pode me ajudar?? :blink:
Carregando comentários...