Obtenir le nom du mois à partir du numéro
Comment puis-je obtenir le nom du mois à partir du numéro du mois?
Par exemple, si j'ai 3
, je veux retourner march
date.tm_month()
Comment obtenir la chaîne march
?
9 réponses
À partir de cela, vous pouvez voir que calendar.month_name[3]
retournerait March
, et l'index du tableau de 0
est la chaîne vide, donc il n'y a pas besoin de s'inquiéter de l'indexation nulle non plus.
import datetime
mydate = datetime.datetime.now()
mydate.strftime("%B")
Retourne: Décembre
Quelques informations supplémentaires sur le site web 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
.
import datetime
monthinteger = 4
month = datetime.date(1900, monthinteger, 1).strftime('%B')
print month
Avril
Ce n'est pas si utile si vous avez juste besoin de connaître le nom du mois pour un nombre donné (1-12), car le jour en cours 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
...
import datetime
mydate = datetime.datetime.now()
mydate.strftime("%B") # 'December'
mydate.strftime("%b") # 'dec'
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 Vraie Date Quand J'Ai Écrit Ceci)
Je vais offrir ceci au cas où (comme moi) vous avez une colonne de numéros de mois dans un dataframe:
df['monthName'] = df['monthNumer'].apply(lambda x: calendar.month_name[x])
J'ai créé ma propre fonction convertissant les nombres en leur mois correspondant.
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"
Ensuite, je peux appeler la fonction. Par exemple:
print (month_name (12))
Sorties:
>>> December
Pour la plage de numéros de mois d'arbitaray
month_integer=range(0,100)
map(lambda x: calendar.month_name[x%12+start],month_integer)
Donnera la liste correcte. Ajustez start
- paramètre à partir duquel janvier commence dans la liste mois entier.