Estou tentando criar uma função que pode converter um número de mês em um nome de mês abreviado ou um nome de mês abreviado em um número de mês. Achei que essa fosse uma pergunta comum, mas não consegui encontrar online.
Estava pensando no módulo do calendário . Vejo que para converter do número do mês para o nome do mês abreviado, você pode simplesmente fazer calendar.month_abbr[num]
. Não vejo uma maneira de ir na outra direção, entretanto. Criar um dicionário para converter na outra direção seria a melhor maneira de lidar com isso? Ou existe uma maneira melhor de ir do nome do mês para o número do mês e vice-versa?
<calendar._localized_month instance at 0x0164C9E0>
. A versão original do código de David produziu erros de sintaxe em 2.6 e 3.1 - ambos precisam em()
torno de v, k e ambos precisam enumerar para calendar.month_abbr, que corrigi.calendar.month_abbr
era um array em vez de um dicionário.Apenas por diversão:
fonte
Usando o módulo de calendário :
Número para Abbr
calendar.month_abbr[month_number]
Abbr-to-Number
list(calendar.month_abbr).index(month_abbr)
fonte
list(calendar.month_name).index('January')
Aqui está outra maneira de fazer isso.
fonte
month_cal = dict((v,k) for v,k in zip(calendar.month_abbr[1:], range(1, 13)))
e entãomonth_cal[shortMonth]
Fonte de informação: Python Docs
Para obter o número do mês a partir do nome do mês, use o módulo datetime
fonte
Aqui está um método mais abrangente que também pode aceitar nomes de meses completos
exemplo:
fonte
Mais um:
fonte
Para obter o nome do mês usando o número do mês, você pode usar
time
:E para obter o número do mês usando o nome do mês:
fonte
Com base nas ideias expressas acima, isso é eficaz para alterar o nome de um mês para o número do mês apropriado:
fonte
fonte
Você pode usar a seguir como alternativa.
from time import strptime
strptime('Feb','%b').tm_mon
import calendar
calendar.month_abbr[2]
oucalendar.month[2]
fonte