web-dev-qa-db-fra.com

Obtenir le nom du mois à partir du numéro

Comment puis-je obtenir le nom du mois à partir du numéro de mois?

Par exemple, si j'ai 3, je veux renvoyer march 

date.tm_month()

Comment obtenir la chaîne march?

158
Rajeev

API de calendrier

A partir de là, vous pouvez voir que calendar.month_name[3] renverrait March, et que l'index de tableau de 0 est la chaîne vide. Vous n'avez donc pas à vous soucier de l'indexation nulle.

203
siame
import datetime
mydate = datetime.datetime.now()
mydate.strftime("%B")

Retours: décembre

Quelques informations supplémentaires sur le site Web de Python Doc


[EDIT: excellent commentaire de @GiriB] Vous pouvez également utiliser %b qui renvoie la notation courte pour le nom du mois.

mydate.strftime("%b")

Pour l'exemple ci-dessus, il retournerait Dec.

276
JMax
import datetime

monthinteger = 4

month = datetime.date(1900, monthinteger, 1).strftime('%B')

print month

Avril

39
Mike Yantis

Ce n'est pas très utile si vous devez simplement connaître le nom du mois pour un numéro donné (1 à 12), car le jour actuel n'a pas d'importance. 

calendar.month_name[i] 

ou 

calendar.month_abbr[i] 

sont plus utiles ici. 

Voici un exemple:

import calendar

for month_idx in range(1, 13):
    print (calendar.month_name[month_idx])
    print (calendar.month_abbr[month_idx])
    print ("")

Exemple de sortie:

January
Jan

February
Feb

March
Mar

...
23
Jay Sheth
import datetime
mydate = datetime.datetime.now()
mydate.strftime("%B") # 'December'
mydate.strftime("%b") # 'dec'
15
ancho

C'est ce que je ferais:

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)

Il produit:

>>> September

(C'était la date réelle quand j'ai écrit ceci)

6
The Big Fat Pig

J'offrirai ceci au cas où (comme moi) vous ayez une colonne de mois dans une base de données:

df['monthName'] = df['monthNumer'].apply(lambda x: calendar.month_name[x])
5
Brett Rudder

Pour la plage arbitraire des numéros de mois 

month_integer=range(0,100)
map(lambda x: calendar.month_name[x%12+start],month_integer)

donnera la liste correcte. Ajustez le paramètre start- à partir du mois de janvier dans la liste des mois.

0
Mehtab Pathan