Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #59 da revista programar. Faz já o download aqui!

nuno35

[Resolvido] Mudar formato das datas

Mensagens Recomendadas

nuno35    0
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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pwseo    223
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.

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.