Respostas:
A partir disso, você pode ver que calendar.month_name[3]
retornaria March
, e o índice da matriz 0
é a string vazia, portanto não há necessidade de se preocupar com a indexação zero.
import datetime
mydate = datetime.datetime.now()
mydate.strftime("%B")
Retorna: dezembro
Mais algumas informações no site de documentos do Python
[EDIT: ótimo comentário de @GiriB] Você também pode usar o %b
que retorna a notação curta para o nome do mês.
mydate.strftime("%b")
Para o exemplo acima, ele retornaria Dec
.
mydate.strftime("%b")
retorna notação curta para o nome do mês. (Para o exemplo acima, retornaria Dec
)
import datetime
monthinteger = 4
month = datetime.date(1900, monthinteger, 1).strftime('%B')
print month
abril
Isso não é tão útil se você precisar apenas saber o nome do mês para um determinado número (1 a 12), pois o dia atual não importa.
calendar.month_name[i]
ou
calendar.month_abbr[i]
são mais úteis aqui.
Aqui está um exemplo:
import calendar
for month_idx in range(1, 13):
print (calendar.month_name[month_idx])
print (calendar.month_abbr[month_idx])
print ("")
Saída de amostra:
January
Jan
February
Feb
March
Mar
...
month_name
emonth_abbr
range(1, 13)
no seu exemplo para obter todos os 12 meses na saída.
Oferecerei isso caso (como eu) você tenha uma coluna de números de mês em um dataframe:
df['monthName'] = df['monthNumer'].apply(lambda x: calendar.month_name[x])
Isto é o que eu faria:
from datetime import *
months = ["Unknown",
"January",
"Febuary",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"]
now = (datetime.now())
year = (now.year)
month = (months[now.month])
print(month)
Saídas:
>>> September
(Esta foi a data real em que escrevi isso)
Algumas boas respostas já fazem uso do calendário, mas o efeito de definir o código do idioma ainda não foi mencionado.
Por exemplo, em francês:
import locale
import calendar
locale.setlocale(locale.LC_ALL, 'fr_FR')
assert calendar.month_name[1] == 'janvier'
assert calendar.month_abbr[1] == 'jan'
Se você planeja usar setlocale
seu código, leia as seções de dicas e advertências e do escritor de extensão da documentação. O exemplo mostrado aqui não é representativo de como deve ser usado. Em particular, nessas duas seções:
Geralmente, é uma má idéia chamar setlocale () em alguma rotina da biblioteca, pois como efeito colateral isso afeta todo o programa […]
Os módulos de extensão nunca devem chamar setlocale () […]
calendar
. Talvez eu possa atualizar o texto.
Para números de intervalo de meses arbitaray
month_integer=range(0,100)
map(lambda x: calendar.month_name[x%12+start],month_integer)
produzirá a lista correta. Ajuste start
-parâmetro de onde janeiro começa na lista inteiro do mês.
8.1 datetime - Tipos básicos de data e hora - documentação do Python 2.7.17 https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior
Uma lista de todos os argumentos do strftime. Nomes de meses e coisas legais como formatação deixaram zero de preenchimento. Leia a página inteira para coisas como regras para argumentos "ingênuos". Aqui está a lista resumida:% a Dom, Seg,…, Sáb
% A domingo, segunda-feira,…, sábado
% w Dia da semana como número, onde 0 é domingo
% d Dia do mês 01, 02,…, 31
% b Jan, fev,…, dez
% B janeiro, fevereiro,…, dezembro
% m Número do mês como 01, 02,…, 12 preenchido com zero
% y ano de 2 dígitos preenchido com zero 00, 01,…, 99
% Y 4 dígitos Ano 1970, 1988, 2001, 2013
% H Hora (relógio de 24 horas) preenchido com zero 00, 01,…, 23
% I hora (relógio de 12 horas) preenchido com zero 01, 02,…, 12
% p AM ou PM.
% M Minuto preenchido com zero 00, 01,…, 59
% S Segundo preenchido com zero 00, 01,…, 59
% f Microssegundo preenchido com zero 000000, 000001,…, 999999
Deslocamento% z UTC no formato + HHMM ou -HHMM +0000, -0400, +1030
% Z Nome do fuso horário UTC, EST, CST
% j Dia do ano preenchido com zero 001, 002,…, 366
% U Número da semana do ano preenchido com zero, dias antes do primeiro domingo são a semana 0
% W Número da semana do ano (segunda-feira como primeiro dia)
% c Representação de data e hora da localidade. Ter 16 de agosto 21:30:00 1988
% x representação da data da localidade. 16/08/1988 (pt_BR)
Representação de tempo do local X%. 21:30:00
Caractere %% literal '%'.
Criei minha própria função convertendo números para o mês correspondente.
def month_name (number):
if number == 1:
return "January"
elif number == 2:
return "February"
elif number == 3:
return "March"
elif number == 4:
return "April"
elif number == 5:
return "May"
elif number == 6:
return "June"
elif number == 7:
return "July"
elif number == 8:
return "August"
elif number == 9:
return "September"
elif number == 10:
return "October"
elif number == 11:
return "November"
elif number == 12:
return "December"
Então eu posso chamar a função Por exemplo:
print (month_name (12))
Saídas:
>>> December
calendar
módulo interno. Qual é o benefício de criar sua própria função para replicar os mesmos resultados? Além disso, um dicionário seria muito mais rápido que uma série de declarações elif.