Yanıtlar:
Bundan, calendar.month_name[3]
bunun döneceğini March
ve dizinin dizini 0
boş dize olduğunu görebilirsiniz, bu nedenle sıfır indeksleme konusunda da endişelenmenize gerek yoktur.
import datetime
mydate = datetime.datetime.now()
mydate.strftime("%B")
İade: Aralık
Python doc web sitesinde biraz daha bilgi
[EDIT: @GiriB'den harika yorum] %b
Ay adı için kısa gösterimi döndüren öğeyi de kullanabilirsiniz .
mydate.strftime("%b")
Yukarıdaki örnek için geri dönecektir Dec
.
mydate.strftime("%b")
ay adı için kısa gösterim döndürür. (Yukarıdaki örnek için geri dönecektir Dec
)
import datetime
monthinteger = 4
month = datetime.date(1900, monthinteger, 1).strftime('%B')
print month
Nisan
Geçerli bir günün önemli olmadığı için, belirli bir sayı için ay adını bilmeniz gerekiyorsa (1 - 12) bu çok yararlı değildir.
calendar.month_name[i]
veya
calendar.month_abbr[i]
burada daha kullanışlıdır.
İşte bir örnek:
import calendar
for month_idx in range(1, 13):
print (calendar.month_name[month_idx])
print (calendar.month_abbr[month_idx])
print ("")
Örnek çıktı:
January
Jan
February
Feb
March
Mar
...
month_name
vemonth_abbr
range(1, 13)
örneğin 12 ayın tamamını çıktıda almanızı öneririz .
(Benim gibi) bir veri çerçevesinde bir aylık sütun sayısı olması durumunda bunu sunacağım:
df['monthName'] = df['monthNumer'].apply(lambda x: calendar.month_name[x])
Yapacağım şey bu:
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)
Çıktılar:
>>> September
(Bu Yazdığım Gerçek Tarihti)
Bazı iyi yanıtlar zaten takvimi kullanıyor, ancak yerel ayarlamanın etkisinden henüz bahsedilmedi.
Örneğin, Fransızca:
import locale
import calendar
locale.setlocale(locale.LC_ALL, 'fr_FR')
assert calendar.month_name[1] == 'janvier'
assert calendar.month_abbr[1] == 'jan'
setlocale
Kodunuzda kullanmayı planlıyorsanız , ipuçları ve uyarılar ile uzantı yazarı bölümlerini belgelerden okuduğunuzdan emin olun . Burada gösterilen örnek, nasıl kullanılması gerektiğini temsil etmez. Özellikle, bu iki bölümden:
Genellikle bir yan etkisi olarak tüm programı etkiler, çünkü bazı kütüphane rutin setlocale () çağırmak için kötü bir fikirdir […]
Genişletme modülleri asla setlocale () çağrmamalıdır […]
calendar
. Metni güncelleyebilirim.
Arbitaray ay sayısı aralığı için
month_integer=range(0,100)
map(lambda x: calendar.month_name[x%12+start],month_integer)
doğru liste verecektir. start
Ay-tamsayı listesinde Ocak ayının başladığı noktadan -parametreyi ayarlayın .
8.1. datetime - Temel tarih ve saat türleri - Python 2.7.17 belgeleri https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior
Tüm strftime argümanlarının listesi. Ayların isimleri ve biçimlendirme gibi güzel şeyler sıfır doldurdu. "Naif" argümanlar için kurallar gibi şeyler için tam sayfayı okuyun. Kısaca liste:% a Sun, Pzt,…, Cmt
% Bir Pazar, Pazartesi,…, Cumartesi
Haftalık sayı olarak% w; burada 0 Pazar
% d Ayın günü 01, 02,…, 31
% b Oca, Şub,…, Ara
% B Ocak, Şubat,…, Aralık
% m Ay sayısı sıfır dolgulu 01, 02,…, 12
% y 2 haneli yıl sıfır dolgulu 00, 01,…, 99
% Y 4 haneli Yıl 1970, 1988, 2001, 2013
% H Saat (24 saat) sıfır dolgulu 00, 01,…, 23
% I Saat (12 saatlik zaman) sıfır dolgulu 01, 02,…, 12
% p AM veya PM.
% M Dakika sıfır dolgulu 00, 01,…, 59
% S İkinci sıfır dolgulu 00, 01,…, 59
% f Mikrosaniye sıfır dolgulu 000000, 000001,…, 999999
% z UTC farkı + HHMM veya -HHMM +0000, -0400, +1030
% Z Saat dilimi adı UTC, EST, CST
% j Yılın günü sıfır dolgulu 001, 002,…, 366
% U Haftanın numarası sıfır dolgulu, İlk Pazar gününden önceki günler 0 haftadır
% W Yılın haftası sayısı (ilk gün Pazartesi)
% c Yerel ayarın tarih ve saat gösterimi. Sal 16 Ağu 21:30:00 1988
% x Yerel ayarın tarih gösterimi. 16/08/1988 (tr_TR)
% X Yerel ayarın zaman gösterimi. 21:30:00
%% değişmez '%' karakteri.
Numaraları karşılık gelen aya çevirerek kendi fonksiyonumu oluşturdum.
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"
Sonra işlevi çağırabilirim. Örneğin:
print (month_name (12))
Çıktılar:
>>> December
calendar
modülde zaten mevcuttur . Aynı sonuçları çoğaltmak için kendi işlevinizi yaratmanın ne yararı olabilir? Ayrıca, bir sözlük bir dizi elif ifadesinden çok daha hızlı olacaktır.