Ir para conteúdo

POWERED BY:

  • ×   Você colou conteúdo com formatação.   Remover formatação

      Only 75 emoji are allowed.

    ×   Your link has been automatically embedded.   Display as a link instead

    ×   Your previous content has been restored.   Clear editor

    ×   You cannot paste images directly. Upload or insert images from URL.

  • Conteúdo Similar

    • Por klonder
      Boas galera!
      Vou deixar aqui um código que acabei de criar de um método que recebe a data de nascimento em formato de string e retorna a idade. Eu tinha esse código em JAVA, fiz umas melhorias e adaptei para Python, para o novo sistema que estou desenvolvendo.
      Deixo aí para quem precisar e também para minhas pesquisas futuras:
      O método retorna a idade no padrão: AAa | AAa MMm | AAa MMm DDd, exemplos: 38a | 38a 14m | 38a 14m 5d
      Deixei o parâmetro "tipo" podendo receber "a", "m", "d" apenas para facilitar a referência a "anos", "meses" e "dias", mas sintam-se à vontade para alterar depois!
      Boa sorte!
      from datetime import datetime,date def calcularIdade(self,dtYYYYMMDD,tipo): #dtYYYYMMDD: string de data no formato YYYY-MM-DD (exemplo: padrão SQL) #tipo: Pode receber "a","m","d" -> a: retorna YYa | m: retorna YYa MMd | d: retorna YYa MMm DDd dtDN = datetime.strptime(dtYYYYMMDD, '%Y-%m-%d').date() dtHoje = date.today() anoNasc = int(dtDN.strftime('%Y')) anoHoje = int(dtHoje.strftime('%Y')) mesNasc = int(dtDN.strftime('%m')) mesHoje = int(dtHoje.strftime('%m')) diaNasc = int(dtDN.strftime('%d')) diaHoje = int(dtHoje.strftime('%d')) dtNiver = datetime.strptime(str(anoHoje)+"-"+str(mesNasc)+"-"+str(diaNasc), '%Y-%m-%d').date() diffAnos = anoHoje-anoNasc diffMeses = mesHoje-mesNasc diffDias = diaHoje-diaNasc if dtHoje<dtNiver:#Ainda não fez aniversário esse ano! diffAnos = anoHoje-anoNasc-1#Corrigindo o ano, pois ainda não fez aniversário diffMeses = 12+diffMeses#Corrigindo os meses/diffMeses é negativo!!! if diaHoje < diaNasc:#O mês ainda não virou diffMeses = diffMeses-1 #Para o cálculo dos dias, é importante avaliar uma série de variáveis: Mês com 28,20,30 ou 31 dias mes_anterior_31d = [1,2,4,6,9,11] mes_anterior_30d = [5,7,8,10,12] if mesHoje in mes_anterior_31d: diffDias = (31-diaNasc)+diaHoje elif mesHoje in mes_anterior_30d: diffDias = (30-diaNasc)+diaHoje else: if anoHoje%4 == 0:#Cálculos para anos bissextos diffDias = (29-diaNasc)+diaHoje else:#Anos não bissextos diffDias = (28-diaNasc)+diaHoje if tipo == "a": return str(diffAnos)+"a" elif tipo == "m": return str(diffAnos)+"a "+str(diffMeses)+"m " else: return str(diffAnos)+"a "+str(diffMeses)+"m "+str(diffDias)+"d" Exemplo de chamada:
      print(self.calcularIdade("1981-09-11","d"))  
×

Informação importante

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