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!
Latest posts by Breno RdV (see all)
- O que é Metaclass e como ela funciona. (#python #dev #metaclass) - janeiro 11, 2023
- Entenda a mágica dos Generators. (#python, #dev, #generator, #iterator) - dezembro 28, 2022
- Ordenando um DataFrame por múltiplas colunas. (#python #pandas #jupyter #dev #data) - agosto 3, 2022