পাইথনে একটি স্ট্রিং হিসাবে একটি তারিখ থেকে সপ্তাহ বা মাসের দিন পান (যেমন জার্মান বা ইংরেজি)

ব্যবসায়

পাইথনের স্ট্যান্ডার্ড লাইব্রেরি ডেটটাইম ব্যবহার করে, আপনি তারিখের স্ট্রিং থেকে একটি ডেটটাইম অবজেক্ট তৈরি করতে পারেন এবং একটি স্ট্রিং হিসাবে এটি থেকে সপ্তাহ বা মাসের দিনের নাম পেতে পারেন। যাইহোক, এই স্ট্রিংগুলির ভাষা পরিবেশের লোকেল (দেশ বা অঞ্চলের সেটিং) উপর নির্ভর করে।

যেকোন ভাষায় একটি স্ট্রিং হিসাবে একটি তারিখ থেকে সপ্তাহ বা মাসের দিনের নাম পেতে এখানে দুটি উপায় রয়েছে।

  • লোকেল মডিউল দিয়ে লোকেল পরিবর্তন করুন
  • একটি নতুন ফাংশন সংজ্ঞায়িত করুন

তারিখ এবং সময় (তারিখ, সময়) এবং স্ট্রিংগুলির মধ্যে রূপান্তর করার জন্য datetime মডিউলের মৌলিক ব্যবহার এবং পদ্ধতিগুলি strptime() এবং strftime() সম্পর্কে আরও তথ্যের জন্য, অনুগ্রহ করে নিম্নলিখিত নিবন্ধগুলি পড়ুন৷

লোকেল মডিউল দিয়ে লোকেল পরিবর্তন করুন

পাইথন স্ট্যান্ডার্ড লাইব্রেরি লোকেল সেটিংস নিয়ন্ত্রণ করতে একটি লোকেল মডিউল প্রদান করে।

এটি পরিবেশের উপর নির্ভর করে, তবে উদাহরণ পরিবেশে, strftime() পদ্ধতিতে নিম্নলিখিত ফর্ম্যাটিং কোড ব্যবহার করে, সপ্তাহের দিন এবং মাসের নাম ইংরেজি স্বরলিপিতে পাওয়া যেতে পারে।
%A,%a,%B,%b

নিম্নলিখিত উদাহরণ তারিখ এবং সময় (তারিখ এবং সময়) প্রতিনিধিত্ব করতে একটি datetime অবজেক্ট ব্যবহার করে, কিন্তু এটি শুধুমাত্র তারিখ তথ্য আছে একটি তারিখ বস্তুর জন্য সত্য।

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

আপনি যদি কোনো ভাষার তারিখের স্ট্রিং থেকে একটি নির্দিষ্ট তারিখের জন্য সপ্তাহের দিন পেতে চান, আপনি নীচের পদক্ষেপগুলি অনুসরণ করে তা করতে পারেন।

  • locale.setlocale() এ কাঙ্ক্ষিত ভাষা সেটিং (যেমন ja_JP.UTF-8) এর মান পর্যন্ত LC_TIME
  • strptime() দিয়ে একটি স্ট্রিংকে ডেটটাইম অবজেক্টে রূপান্তর করা হচ্ছে
  • নিচের ফরম্যাটিং কোড সহ সেই datetime অবজেক্টে strftime() কে কল করুন:%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)
# 月曜日

একটি নতুন ফাংশন সংজ্ঞায়িত করুন

এটি একটি নতুন ফাংশন সংজ্ঞায়িত করে অর্জন করা যেতে পারে।

ডেটটাইম অবজেক্টের সপ্তাহের দিন() পদ্ধতি সোমবারের জন্য 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