Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

giselly

Subtração de Datas

Recommended Posts

Pessoal, tenho a data de nascimento de um cliente e quero retornar a idade do cara... estava fazendo assim:$ClienteDataNascimento = $row_usuarios['ClienteDataNascimento'];// campo datetimelist ($data, $hora) = explode (" ", $ClienteDataNascimento);$data = trim($data);$hora = trim ($hora);list ($ano, $mes, $dia) = explode ('-', $data);$ano =trim($ano);$mes =trim($mes);$dia = trim($dia);$bdayunix = mktime ("", "", "", $dia, $mes, $ano);// obtém ts unix para bday$nowunix = time( ); // obtém ts unix para hoje$idadeunix = $nowunix - $bdayunix; // acha a diferença$idade = floor($idadeunix / (365 * 24 * 60 * 60 ));// converte de segundos para anosecho "$idade"; // age é a idadeAcontece que se o cara nasceu antes de 1970 dá erro, porque a data unix começa em 1970....Na base tenho as datas de nascimento em date time.Outro problema: vou precisar também que ao dizer: quero um usuário entre 18 e 60 anos... aí o sistema calcula as possíveis datas de nascimento para buscar na base o intervalo das datas....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho este exemplo aqui e funciona perfeitamente:

 

PHP [/tr][tr]

<?

// Paramentos: $mm $dd $yyyy de aniversario

function calculaDia($iMes, $iDia, $iAno) {

$iTimeStamp = (mktime(0, 0, 0, date(m), date(d), date(Y)) - 86400) - mktime(0, 0, 0, $iMes, $iDia, $iAno);

$iDias = $iTimeStamp / 86400;

$iAnos = floor($iDias);

$iAnos = $iAnos / 365;

return $iAnos;

}

?>

 

<?

print calculaDia(11, 18, 1970);

?>

[/tr]

 

Vê se não dá para alterar para a tua necessidade.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigada pela sua atenção, amigo. Mas continuo com esse impasse...O meu código está funcionando, desde que a data de nascimento seja superior a 1970, seu código também usa mktime ...mktime -- Obtém um timestamp Unix para uma datamktime retorna o número de segundos entre a Era Unix (January 1 1970) e o tempo especificado, logo se a data for anterior a 1970 dá erro.Gostaria de subtrair sem usar mktime.Quem souber me dá uma dica, please...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, mas o codigo que te passei funciona para datas inferiores a 70 e o seu não, por isso passei, mas não dá nada.Vou dar uma olhada, se conseguir algo te digo.Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

PHP [/tr][tr]$data = "18/10/1989";

list ($dia,$mes,$ano,$diaH,$mesH,$anoH) = explode("/",$data."/".date("d/m/Y"));

$idade = (($mesH<$mes) OR (($mesH==$mes) AND ($diaH<$dia))) ? $anoH-$ano-1 : $anoH-$ano;

[/tr]

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.