Extraindo nome do dia da semana de uma data. (Python)
Overview
Bem-vindo a uma jornada pela manipulação de datas em Python, um guia essencial para quem deseja aprender a extrair o nome do dia da semana de uma maneira simples, mas eficaz. Neste post, mergulhamos em diferentes abordagens, oferecendo soluções práticas e dicas valiosas para evitar aquela clássica pegadinha entre o pessoal do front-end e do back-end. Prepare-se para adicionar mais uma habilidade ao seu arsenal de programação!
Neste post mostro algumas formas de se extrair o nome do dia da semana de uma data e uma pegadinha que pode acontecer entre a galera do front-end e do back-end com estes procedimentos.
Antes de começar, para todos as abordagens, vamos considerar que os comandos abaixo tenham sido executados:
import datetime
dt = datetime.datetime(year=2018, month=7, day=23) # 23/07/2018, uma Segunda-feira
Agora vamos partir para a abordagem mais simples:
Utilizando formatação de datas
Para esta abordagem, vamos utilizar a função strftime, que converte o objeto de data em uma string formatada.
>>> str_dt = dt.strftime("%a")
>>> print(str_dt)
Mon
OU:
>>> str_dt = dt.strftime("%A")
>>> print(str_dt)
Monday
O format %a ou %A vai exibir o nome da semana “localizado”, ou seja, a forma como ele estará escrito vai depender do idioma do sistema, sendo que o formato %a (letra a minúscula) vai exibir o nome da semana abreviado, enquanto que o formato %A (letra A escrita em maiúsculo) vai exibir o nome da semana completo, mas também depende do idioma do sistema.
Veja o post sobre como converter strings em datetime para mais informações sobre o método e mais dicas sobre como formatar uma data.
Utilizando função weekday
Esta função vai retornar um número entre 0 (zero) e 6, sendo que zero é igual a Segunda-feira e 6 igual a domingo. Com este dado, você pode processa-lo como preferir e exibir o resultado da forma que se adequar a sua necessidade.
>>> weekday_name = ["SEG", "TER", "QUA", "QUI", "SEX", "SAB", "DOM"]
>>> wkday = dt.weekday()
>>> print(weekday_name[wkday])
SEG
No código acima, criei um vetor com os dias da semana (em ordem) e utilizei a função weekday na nossa variável que contem a data. Ela retornou 0 (zero), pois estamos na segunda-feira. O próximo passo foi acessar esta posição no vetor e pegar o dia da semana correspondente.
Atenção! Com esta função, o Python considera como primeiro dia da semana (weekday = zero) a segunda-feira, mas para o Javascript, a semana começa no domingo.
Utilizando um pouco de cada abordagem e fugindo da pegadinha
Existe um formato do strftime que resolve a “pegadinha” entre Javascript e Python, mas você que já leu o artigo sobre como converter strings em datetime, você já sabia disso. 😉
Vamos ao exemplo:
>>> weekday_name = ["DOM", "SEG", "TER", "QUA", "QUI", "SEX", "SAB"]
>>> wk_num = int(dt.strftime("%w"))
>>> print(weekday_name[wk_num])
SEG
O que fizemos acima foi:
- Ajustamos as posições do vetor com o nome dos dias semana, de forma que o primeiro dia seja Domingo;
- Recuperamos a string com o numero da semana, utilizando a função strftime com o formato %w e convertemos o resultado em um integer. Este formato retorna o número do dia da semana (em uma string) e considera o primeiro dia da semana como Domingo;
- Recuperamos o nome do dia da semana do vetor ajustado.
Espero ter ajudado!