संख्या से महीने का नाम प्राप्त करें


230

मैं महीने की संख्या से महीने का नाम कैसे प्राप्त कर सकता हूं?

उदाहरण के लिए, यदि मेरे पास है, तो मैं 3वापस लौटना चाहता हूंmarch

date.tm_month()

स्ट्रिंग कैसे प्राप्त करें march?

जवाबों:


269

कैलेंडर एपीआई

calendar.month_name[3]उससे आप देख सकते हैं कि वापस आ जाएगा March, और सरणी सूचकांक 0खाली स्ट्रिंग है, इसलिए शून्य-इंडेक्सिंग के बारे में चिंता करने की कोई आवश्यकता नहीं है।


35
आप एक छोटे महीने के नाम के लिए Calendar.month_abbr [i] का उपयोग भी कर सकते हैं - जैसे Mar.
Jay Sheth

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

रिटर्न: दिसंबर

पायथन डॉक वेबसाइट पर कुछ और जानकारी


[EDIT: @GiriB से शानदार टिप्पणी] आप यह भी उपयोग कर सकते हैं %bकि महीने के नाम के लिए लघु संकेतन लौटाता है।

mydate.strftime("%b")

उपरोक्त उदाहरण के लिए, यह वापस आ जाएगी Dec


7
यह इतना मददगार नहीं है अगर आपको किसी दिए गए नंबर (1 - 12) के लिए सिर्फ महीने का नाम जानना है, क्योंकि वर्तमान दिन कोई मायने नहीं रखता है। Calendar.month_name [i] या Calendar.month_abbr [i] यहां अधिक उपयोगी हैं।
Jay Sheth

11
mydate.strftime("%b")महीने के नाम के लिए लघु संकेतन देता है। (उपरोक्त उदाहरण के लिए, यह वापस आ जाएगा Dec)
गिरीबी

3
ओपी इनपुट के रूप में एक पूर्णांक का उपयोग करना चाहते हैं, डेटाटाइम नहीं। जीवनकाल वस्तु। आप mydate = datetime.datetime (2019, पूर्णांक, 1, 0, 0) का उपयोग कर सकते हैं, लेकिन यह बदसूरत है
रटगेर हॉफटाइम ईडन

मैं यह देखने में विफल हूं कि यह सवाल का जवाब कैसे देता है।
cglacet


35

यह इतना उपयोगी नहीं है अगर आपको किसी दिए गए नंबर (1 - 12) के लिए सिर्फ महीने का नाम पता होना चाहिए, क्योंकि वर्तमान दिन कोई मायने नहीं रखता है।

calendar.month_name[i]

या

calendar.month_abbr[i]

यहाँ अधिक उपयोगी हैं।

यहाँ एक उदाहरण है:

import calendar

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

नमूना उत्पादन:

January
Jan

February
Feb

March
Mar

...

आपके उत्तर के लिए धन्यवाद। अगर मैं कोई सुझाव जोड़ सकता हूं, तो आप इस कोड और इस अंतर का उपयोग करने के तरीके के इनपुट और आउटपुट के कुछ उदाहरण जोड़ सकते हैं month_nameऔरmonth_abbr
JMax

यह सहायक है, मैं range(1, 13)आपके उदाहरण में उपयोग करने का सुझाव देता हूं ताकि आपको आउटपुट में सभी 12 महीने मिलें।
द्विजगोडा

21
import datetime
mydate = datetime.datetime.now()
mydate.strftime("%B") # 'December'
mydate.strftime("%b") # 'dec'

10

मैं इस मामले में (मेरी तरह) आपको डेटाफ़्रेम में महीने की संख्या का एक कॉलम पेश करूँगा:

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

10

क्या यही मुझे करना होगा:

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)

यह आउटपुट:

>>> September

(यह असली तारीख थी जब मैंने यह लिखा था)


3

कुछ अच्छे उत्तर पहले से ही कैलेंडर का उपयोग करते हैं, लेकिन लोकेल सेट करने के प्रभाव का अभी तक उल्लेख नहीं किया गया है।

उदाहरण के लिए, फ्रेंच में:

import locale
import calendar

locale.setlocale(locale.LC_ALL, 'fr_FR')

assert calendar.month_name[1] == 'janvier'
assert calendar.month_abbr[1] == 'jan'

यदि आप setlocaleअपने कोड का उपयोग करने की योजना बनाते हैं, तो दस्तावेज़ से टिप्स और कैविटीज़ और लेखक अनुभागों को पढ़ना सुनिश्चित करें । यहां दिखाया गया उदाहरण इस बात का प्रतिनिधि नहीं है कि इसका उपयोग कैसे किया जाना चाहिए। विशेष रूप से, इन दो वर्गों से:

यह आमतौर पर कुछ लाइब्रेरी रूटीन में सेटलोकाले () को कॉल करने के लिए एक बुरा विचार है, क्योंकि साइड इफेक्ट के रूप में यह पूरे कार्यक्रम को प्रभावित करता है […]

एक्सटेंशन मॉड्यूल को सेटलोकाले () […] नहीं कहना चाहिए


1
अच्छा जोड़, बस मैं एक फालबैक संस्कृति जोड़ने का सुझाव देता हूं या बस सेटेलेल कॉल को एक कोशिश / छोड़कर में लपेटता हूं, क्योंकि अगर वह संस्कृति उपलब्ध नहीं है, तो आपको एक अपवाद मिलता है (बस इस कोशिश के बाद मेरे साथ हुआ;))
firepol

मुझे लगता है कि मैं कोड छोड़ दूंगा क्योंकि लोकेशन सेट करना संभवत: ऐसा कुछ नहीं है जो आप उस कोड के पास वैसे भी करेंगे। मैं सिर्फ यह बताना चाहता था कि लोकल को सेट करने से मूल्यों पर क्या असर पड़ता है calendar। मैं शायद पाठ को अपडेट कर सकता हूं।
cglacet

1

माह संख्या की मनमानी श्रेणी के लिए

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

सही सूची देगा। समायोजित करें- startजहाँ से जनवरी महीने की पूर्णांक सूची में शुरू होता है।


0

8.1। डेटाटाइम - मूल दिनांक और समय प्रकार - पायथन 2.7.17 प्रलेखन https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior

सभी तर्कों की एक सूची। महीनों के नाम और अच्छी सामग्री जैसे फॉर्मेटिंग शून्य शून्य भरना। "भोले" तर्कों के लिए नियमों जैसे सामान के लिए पूरा पृष्ठ पढ़ें। यहाँ संक्षेप में सूची दी गई है:% a Sun, Mon,…, Sat

% एक रविवार, सोमवार,…, शनिवार

% w वीकडे नंबर के रूप में, जहां 0 रविवार है

महीने का% d दिन 01, 02,…, 31

% b जनवरी, फ़रवरी,…, दिसंबर

% B जनवरी, फरवरी, ..., दिसंबर

शून्य-गद्देदार 01, 02,…, 12 के रूप में% m माह की संख्या

% y 2 अंक वर्ष शून्य-गद्देदार 00, 01,…, 99

% Y 4 अंक वर्ष 1970, 1988, 2001, 2013

% एच घंटा (24-घंटे की घड़ी) शून्य-गद्देदार 00, 01,…, 23

% I घंटा (12 घंटे की घड़ी) शून्य-गद्देदार 01, 02,…, 12

% p एएम या पीएम।

% M मिनट शून्य-गद्देदार 00, 01,…, 59

% S दूसरा शून्य-गद्देदार 00, 01,…, 59

% f माइक्रोसेकंड जीरो-पैडेड 000000, 000001,…, 999999

% z UTC फॉर्म + HHMM या -HHMM +0000, -0400, +1030 में ऑफसेट

% Z समय क्षेत्र का नाम UTC, EST, CST

वर्ष का% j दिन शून्य-गद्देदार 001, 002,…, 366

% U सप्ताह की संख्या शून्य गद्देदार, पहले रविवार से पहले दिन 0 हैं

वर्ष का% W सप्ताह संख्या (पहले दिन के रूप में सोमवार)

% c लोकेल की तारीख और समय प्रतिनिधित्व। Tue Aug 16 21:30:00 1988

% x लोकेल की तारीख प्रतिनिधित्व। 08/16/1988 (en_US)

% X लोकेल का समय प्रतिनिधित्व। 21:30:00

%% शाब्दिक '%' वर्ण।


-6

मैंने अपने स्वयं के फ़ंक्शन को उनके संबंधित महीने में संख्याओं को परिवर्तित करने के लिए बनाया।

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"

तब मैं फ़ंक्शन को कॉल कर सकता हूं। उदाहरण के लिए:

print (month_name (12))

आउटपुट:

>>> December

3
जैसा कि अन्य उत्तरों में दिखाया गया है, यह कार्यक्षमता पहले से ही अंतर्निहित calendarमॉड्यूल में मौजूद है । समान परिणाम दोहराने के लिए अपना स्वयं का फ़ंक्शन बनाने के लिए क्या लाभ हो सकता है? इसके अलावा, एक शब्द भी एलिफ बयानों की एक श्रृंखला की तुलना में बहुत तेज होगा।
टॉम

4
अन्य सभी मुद्दों के अलावा, आपका फ़ंक्शन केवल अंग्रेजी लोकेल के लिए काम करता है
mick88
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.