giselly 0 Denunciar post Postado Outubro 4, 2004 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
walace 1 Denunciar post Postado Outubro 4, 2004 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
giselly 0 Denunciar post Postado Outubro 4, 2004 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
walace 1 Denunciar post Postado Outubro 4, 2004 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
Alisson Rodrigues 3 Denunciar post Postado Outubro 4, 2004 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
giselly 0 Denunciar post Postado Outubro 4, 2004 Deu certo, muito obrigada! Compartilhar este post Link para o post Compartilhar em outros sites