Extraindo nome do dia da semana de uma data. (Python)

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:

  1. Ajustamos as posições do vetor com o nome dos dias semana, de forma que o primeiro dia seja Domingo;
  2. 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;
  3. Recuperamos o nome do dia da semana do vetor ajustado.

 

Espero ter ajudado!

The following two tabs change content below.
Arquiteto de Software e Desenvolvedor Backend (quase Fullstack), geralmente trabalho com C#, PowerShell, Python, Golang, bash e Unity (esse é mais por hobby). Estou sempre buscando algo novo para aprender, adicionando novas ferramentas ao meu cinto de utilidades.
Posted in Dev, Python and tagged , , , .