स्ट्रिङको रूपमा पाइथनमा मितिबाट हप्ता वा महिनाको दिन प्राप्त गर्नुहोस् (जस्तै जर्मन वा अंग्रेजी)

व्यापार

पाइथनको मानक पुस्तकालय मिति समय प्रयोग गरेर, तपाइँ मिति स्ट्रिङबाट मिति समय वस्तु सिर्जना गर्न सक्नुहुन्छ र स्ट्रिङको रूपमा हप्ता वा महिनाको दिनको नाम प्राप्त गर्न सक्नुहुन्छ। यद्यपि, ती स्ट्रिङहरूको भाषा वातावरणको लोकेल (देश वा क्षेत्र सेटिङ) मा निर्भर गर्दछ।

यहाँ कुनै पनि भाषामा स्ट्रिङको रूपमा मितिबाट हप्ता वा महिनाको दिनको नाम प्राप्त गर्ने दुई तरिकाहरू छन्।

  • लोकेल मोड्युलको साथ लोकेल परिवर्तन गर्नुहोस्
  • नयाँ प्रकार्य परिभाषित गर्नुहोस्

मिति र समय (मिति, समय) र स्ट्रिङहरू बीच रूपान्तरण गर्नको लागि मिति समय मोड्युलको आधारभूत प्रयोग र विधिहरू strptime() र strftime() ’bout थप जानकारीको लागि, कृपया निम्न लेखहरू हेर्नुहोस्।

लोकेल मोड्युलको साथ लोकेल परिवर्तन गर्नुहोस्

पाइथन मानक पुस्तकालयले लोकेल सेटिङहरू नियन्त्रण गर्न लोकेल मोड्युल प्रदान गर्दछ।

यो वातावरणमा निर्भर गर्दछ, तर उदाहरण वातावरणमा, strftime() विधिमा निम्न ढाँचा कोड प्रयोग गरेर, हप्ता र महिनाका दिनहरू अंग्रेजी नोटेशनमा प्राप्त गर्न सकिन्छ।
%A,%a,%B,%b

निम्न उदाहरणले मिति र समय (मिति र समय) लाई प्रतिनिधित्व गर्नको लागि मिति समय वस्तु प्रयोग गर्दछ, तर मिति जानकारी मात्र भएको मिति वस्तुको लागि पनि यो सत्य हो।

import datetime
import locale

dt = datetime.datetime(2018, 1, 1)
print(dt)
# 2018-01-01 00:00:00

print(dt.strftime('%A, %a, %B, %b'))
# Monday, Mon, January, Jan

LC_TIME, समय ढाँचाको लागि लोकेल कोटी सेटिङ, locale.getlocale() को साथ जाँच गरिएको छ, र यसलाई कुनै पनि मा सेट गरिएको छ। यो परिणाम वातावरण मा निर्भर गर्दछ।

print(locale.getlocale(locale.LC_TIME))
# (None, None)

LC_TIME जापानी (UTF-8) ja_JP.UTF-8 मा locale.setlocale() जापानी भाषामा दिन र महिनाको नाम प्राप्त गर्न। locale.LC_ALL सबै लोकेल कोटीहरू सेट गर्न प्रयोग गर्न सकिन्छ, तर याद गर्नुहोस् कि यसले असर गर्नेछ, उदाहरणका लागि LC_MONETARY, उदाहरणका लागि।

ध्यान दिनुहोस् कि यी परिवर्तनहरू यस कोडमा मात्र प्रभावकारी छन्। यसको मतलब यो होइन कि प्रणाली वातावरण चरहरू पुन: लेखिनेछ।

locale.setlocale(locale.LC_TIME, 'ja_JP.UTF-8')
print(locale.getlocale(locale.LC_TIME))
# ('ja_JP', 'UTF-8')

print(dt.strftime('%A, %a, %B, %b'))
# 月曜日, 月, 1月,  1

अन्य भाषा नोटेशनहरू, जस्तै अंग्रेजी वा जर्मन प्रयोग गर्नको लागि तपाईंले लोकेल सेटिङहरू पनि परिवर्तन गर्न सक्नुहुन्छ।

locale.setlocale(locale.LC_TIME, 'en_US.UTF-8')
print(dt.strftime('%A, %a, %B, %b'))
# Monday, Mon, January, Jan

locale.setlocale(locale.LC_TIME, 'de_DE.UTF-8')
print(dt.strftime('%A, %a, %B, %b'))
# Montag, Mo, Januar, Jan

यदि तपाइँ कुनै पनि भाषामा मिति स्ट्रिङबाट दिइएको मितिको लागि हप्ताको दिन प्राप्त गर्न चाहनुहुन्छ भने, तपाइँ तलका चरणहरू पछ्याएर त्यसो गर्न सक्नुहुन्छ।

  • LC_TIME चाहिने भाषा सेटिङको मानमा (जस्तै ja_JP.UTF-8) locale.setlocale() मा
  • strptime() को साथ मिति समय वस्तुमा स्ट्रिङ रूपान्तरण गर्दै
  • strftime() लाई निम्न ढाँचा कोडको साथ त्यो datetime वस्तुमा कल गर्नुहोस्:%A,%a,%B,%b
locale.setlocale(locale.LC_TIME, 'ja_JP.UTF-8')

s = '2018-01-01'
s_dow = datetime.datetime.strptime(s, '%Y-%m-%d').strftime('%A')

print(s_dow)
# 月曜日

नयाँ प्रकार्य परिभाषित गर्नुहोस्

यो नयाँ प्रकार्य परिभाषित गरेर प्राप्त गर्न सकिन्छ।

मिति समय वस्तुको weekday() विधिले सोमबारको लागि 0 र आइतवारको लागि 6 को पूर्णांक मान दिन्छ।

import datetime

dt = datetime.datetime(2018, 1, 1)
print(dt)
# 2018-01-01 00:00:00

print(dt.weekday())
# 0

print(type(dt.weekday()))
# <class 'int'>

त्यहाँ समान विधि हो, isoweekday(), जसले सोमबारको लागि 1 र आइतबारको लागि 7 को पूर्णांक मान फर्काउँछ। ध्यान दिनुहोस् कि त्यहाँ एक सूक्ष्म भिन्नता छ।

print(dt.isoweekday())
# 1

print(type(dt.isoweekday()))
# <class 'int'>

यदि हामीले प्रत्येक भाषा स्ट्रिङको लागि हप्ताका दिनहरूको नामहरूको सूची परिभाषित गर्छौं र हप्ताको दिन() विधिद्वारा प्राप्त पूर्णांक मानहरू प्रयोग गरेर तिनीहरूलाई पुन: प्राप्त गर्छौं भने, हामीले हाम्रो लक्ष्य हासिल गर्न सक्छौं।

Copied title and URL