Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

nuno35

[Resolvido] Mudar formato das datas

Recommended Posts

nuno35

Boa noite

Tenho esta lista de datas:

['04/03/2016', '15/03/2016', '03/08/2016']

e queria converter as datas para este formato AAAAMMDD de modo a ficar

['20160304','20160315','20160803']

Como é que posso fazer isto?

Desde já Obrigado

Share this post


Link to post
Share on other sites
pwseo

Uma vez que este tópico foi criado há já mais de um mês e o OP não voltou para ajudar na sua resolução, resolvi colocar aqui uma forma de resolver, e marcar o tópico como resolvido.

Existem várias formas de abordar este problema, mas talvez o mais conceptualmente correcto seja converter as representações textuais de datas para verdadeiros objectos datetime, através da função strptime(). De seguida, convertemos o objecto para uma nova string com o novo formato, recorrendo à strftime(), assim:

from datetime import datetime as dt

def converter(old):
   # Converter para um objecto datetime
   date = dt.strptime(old, '%d/%m/%Y')

   # Converter para string com formato apropriado
   new  = dt.strftime(date, '%Y%m%d')

   return new

Logicamente, podemos encurtar a definição para o seguinte:

from datetime import datetime as dt

def converter(old):
   return dt.strftime(dt.strptime(old, '%d/%m/%Y'), '%Y%m%d')

E agora, finalmente, podemos testar a função:

>>> orig = ['04/03/2016', '15/03/2016', '03/08/2016']
>>> orig
['04/03/2016', '15/03/2016', '03/08/2016']
>>> [converter(d) for d in orig]
['20160304', '20160315', '20160803']

Adenda: obviamente poderíamos lidar com o problema de forma mais eficiente se considerássemos que cada data é uma string com um formato fixo; poderíamos dividí-la facilmente em 3 elementos cujas posições seriam fáceis de mudar e devolver uma nova string. A abordagem aqui demonstrada é apenas uma das muito possíveis e, admitidamente, não será a mais eficiente, mas é apesar de tudo a mais correcta conceptualmente.

Edited by pwseo
Adicionada solução possível após mais de 1 mês de inactividade do OP.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.