Respuestas:
A partir de eso, puede ver que calendar.month_name[3]volvería March, y el índice de matriz de 0es la cadena vacía, por lo que tampoco hay necesidad de preocuparse por la indexación cero.
import datetime
mydate = datetime.datetime.now()
mydate.strftime("%B")
Devoluciones: diciembre
Más información en el sitio web de Python doc
[EDITAR: gran comentario de @GiriB] También puede usar %bque devuelve la notación corta para el nombre del mes.
mydate.strftime("%b")
Para el ejemplo anterior, volvería Dec.
mydate.strftime("%b")devuelve una notación corta para el nombre del mes. (Para el ejemplo anterior, volvería Dec)
import datetime
monthinteger = 4
month = datetime.date(1900, monthinteger, 1).strftime('%B')
print month
abril
Esto no es tan útil si solo necesita saber el nombre del mes para un número dado (1 - 12), ya que el día actual no importa.
calendar.month_name[i]
o
calendar.month_abbr[i]
son más útiles aquí.
Aquí hay un ejemplo:
import calendar
for month_idx in range(1, 13):
print (calendar.month_name[month_idx])
print (calendar.month_abbr[month_idx])
print ("")
Salida de muestra:
January
Jan
February
Feb
March
Mar
...
month_nameymonth_abbr
range(1, 13)en su ejemplo para que obtenga los 12 meses en la salida.
Ofreceré esto en caso de que (como yo) tenga una columna de números de mes en un marco de datos:
df['monthName'] = df['monthNumer'].apply(lambda x: calendar.month_name[x])
Esto es lo que haría:
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)
Salidas:
>>> September
(Esta fue la fecha real cuando escribí esto)
Algunas buenas respuestas ya hacen uso del calendario, pero el efecto de establecer la configuración regional aún no se ha mencionado.
Por ejemplo, en 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'
Si planea usar setlocalesu código, asegúrese de leer los consejos y advertencias y las secciones del escritor de extensiones de la documentación. El ejemplo que se muestra aquí no es representativo de cómo debe usarse. En particular, de estas dos secciones:
En general, es una mala idea llamar a setlocale () en alguna rutina de biblioteca, ya que como efecto secundario afecta a todo el programa [...]
Los módulos de extensión nunca deberían llamar a setlocale () […]
calendar. Tal vez pueda actualizar el texto.
Para el rango arbitaray de números de mes
month_integer=range(0,100)
map(lambda x: calendar.month_name[x%12+start],month_integer)
rendirá la lista correcta. Ajuste el startparámetro desde donde comienza enero en la lista de meses enteros.
8.1. datetime - Tipos básicos de fecha y hora - Documentación de Python 2.7.17 https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior
Una lista de todos los argumentos de strftime. Los nombres de los meses y cosas bonitas como el formato dejaron cero relleno. Lea la página completa para cosas como reglas para argumentos "ingenuos". Aquí está la lista en resumen:% a Sun, Mon, ..., Sat
% A domingo, lunes, ..., sábado
% w Día de la semana como número, donde 0 es domingo
% d Día del mes 01, 02,…, 31
% b ene, feb, ..., dic
% B enero, febrero, ..., diciembre
% m Número de mes como 01, 02,…, 12 con relleno de cero
% y año de 2 dígitos con relleno de cero 00, 01,…, 99
% Y 4 dígitos Año 1970, 1988, 2001, 2013
% H Hora (reloj de 24 horas) con relleno de cero 00, 01,…, 23
% I Hour (reloj de 12 horas) con relleno de cero 01, 02,…, 12
% p AM o PM.
% M Minuto con relleno cero 00, 01,…, 59
% S Segundo relleno con cero 00, 01,…, 59
% f Microsegundo con relleno cero 000000, 000001,…, 999999
% z UTC offset en la forma + HHMM o -HHMM +0000, -0400, +1030
% Z Nombre de zona horaria UTC, EST, CST
% j Día del año con relleno cero 001, 002,…, 366
% U Número de semana del año con relleno cero, los días antes del primer domingo son la semana 0
% W Número de semana del año (lunes como primer día)
% c Representación de fecha y hora de la localidad. Martes 16 de agosto 21:30:00 1988
% x Representación de fecha local. 16/08/1988 (es_ES)
Representación del tiempo de% X Locale. 21:30:00
Carácter literal %% '%'.
Creé mi propia función convirtiendo números a su mes correspondiente.
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"
Entonces puedo llamar a la función. Por ejemplo:
print (month_name (12))
Salidas:
>>> December
calendarmódulo incorporado . ¿Qué beneficio podría haber al crear su propia función para replicar los mismos resultados? Además, un diccionario sería mucho más rápido que una serie de declaraciones elif.