Réponses:
De cela, vous pouvez voir que calendar.month_name[3]
cela reviendrait March
, et l'index du tableau 0
est la chaîne vide, il n'y a donc pas besoin de s'inquiéter de l'indexation zéro.
import datetime
mydate = datetime.datetime.now()
mydate.strftime("%B")
Retours: décembre
Quelques informations supplémentaires sur le site Web de la doc Python
[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 reviendrait Dec
.
mydate.strftime("%b")
renvoie une notation courte pour le nom du mois. (Pour l'exemple ci-dessus, il reviendrait Dec
)
import datetime
monthinteger = 4
month = datetime.date(1900, monthinteger, 1).strftime('%B')
print month
avril
Ce n'est pas très utile si vous devez simplement 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
...
month_name
etmonth_abbr
range(1, 13)
dans votre exemple pour obtenir les 12 mois de sortie.
Je proposerai ceci au cas où (comme moi) vous avez une colonne de numéros de mois dans une trame de données:
df['monthName'] = df['monthNumer'].apply(lambda x: calendar.month_name[x])
Voici 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 ça)
Certaines bonnes réponses utilisent déjà le calendrier, mais l'effet de la définition des paramètres régionaux n'a pas encore été mentionné.
Par exemple, en français:
import locale
import calendar
locale.setlocale(locale.LC_ALL, 'fr_FR')
assert calendar.month_name[1] == 'janvier'
assert calendar.month_abbr[1] == 'jan'
Si vous prévoyez d'utiliser setlocale
dans votre code, assurez-vous de lire les conseils et les mises en garde et les sections du rédacteur d'extension de la documentation. L'exemple présenté ici n'est pas représentatif de la façon dont il doit être utilisé. En particulier, à partir de ces deux sections:
C'est généralement une mauvaise idée d'appeler setlocale () dans une routine de bibliothèque, car comme effet secondaire, cela affecte tout le programme […]
Les modules d'extension ne doivent jamais appeler setlocale () […]
calendar
. Je peux peut-être mettre à jour le texte.
Pour une plage arbitraire de numéros de mois
month_integer=range(0,100)
map(lambda x: calendar.month_name[x%12+start],month_integer)
produira une liste correcte. Ajustez le start
paramètre à partir du début du mois de janvier dans la liste des mois.
8.1. datetime - Types de date et d'heure de base - Documentation Python 2.7.17 https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior
Une liste de tous les arguments strftime. Les noms des mois et des trucs sympas comme le formatage ne sont pas remplis. Lisez la page complète pour des trucs comme des règles pour les arguments "naïfs". Voici la liste en bref:% a dim, lun,…, sam
% Un dimanche, lundi,…, samedi
% w Jour de la semaine sous forme de nombre, où 0 correspond au dimanche
% d Jour du mois 01, 02,…, 31
% b jan, fév,…, déc
% B janvier, février,…, décembre
% m Numéro de mois sous forme de 01, 02,…, 12
% y à deux chiffres, année zéro, 00, 01,…, 99
% Y 4 chiffres Année 1970, 1988, 2001, 2013
% H Hour (horloge 24 heures) avec remplissage nul 00, 01,…, 23
% I heure (horloge de 12 heures) à remplissage nul 01, 02,…, 12
% p AM ou PM.
% M Minute avec remplissage zéro 00, 01,…, 59
% S Deuxième remplissage zéro 00, 01,…, 59
% f microsecondes, à remplissage nul 000000, 000001,…, 999999
% z Décalage UTC sous la forme + HHMM ou -HHMM +0000, -0400, +1030
% Z Nom du fuseau horaire UTC, EST, CST
% j Jour de l'année à remplissage nul 001, 002,…, 366
% U Numéro de semaine de l'année zéro, les jours avant le premier dimanche sont la semaine 0
% W Numéro de semaine de l'année (lundi comme premier jour)
% c Représentation de la date et de l'heure des paramètres régionaux. Mar 16 août 21:30:00 1988
% x Représentation de la date des paramètres régionaux. 16/08/1988 (en_US)
Représentation temporelle de% X Locale. 21:30:00
Caractère %% littéral '%'.
J'ai créé ma propre fonction en 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))
Les sorties:
>>> December
calendar
module intégré. Quel avantage peut-il y avoir à créer votre propre fonction pour reproduire les mêmes résultats? En outre, un dictionnaire serait beaucoup plus rapide qu'une série d'instructions elif.