ডেটা এবং টাইম ম্যানিপুলেট করা যেকোনো প্রোগ্রামিং ল্যাঙ্গুয়েজের অপরিহার্য অংশ। পাইথনে স্ট্যান্ডার্ড লাইব্রেরিতে datetime মডিউল আছে যেটিতে ডেটা-টাইম নিয়ে ক্যালকুলেশনের প্রায় সব ফিচার এবং ফাংশন আছে। নিচের উদাহরণগুলোতে আমরা ডেটা-টাইমের বিভিন্ন দিক ইমপ্লিমেন্টেশন দেখব।
বর্তমান ডেটা হ্যান্ডলিং
datetime মডিউলে datetime নামক একটি ক্লাস আছে। আমরা এই ক্লাস ইমপোর্ট করে এর ফাংশন ব্যবহার করে একটি ডেটা-টাইম অবজেক্ট তৈরি করতে পারি। তারপর ভিন্ন ফরম্যাটিং টেকনিক ব্যবহার করে ডেটা এবং টাইমের মানগুলো প্রদর্শন করতে পারি। প্রথমে now() ফাংশন দিয়ে একটি ডেটা-টাইম অবজেক্ট তৈরি করি। এই অবজেক্টে বর্তমান ডেটা এবং টাইমের সব পার্ট থাকে এবং তারপর আমরা এর বিভিন্ন পার্ট ম্যানিপুলেট করি।
উদাহরণ
from datetime import datetime
dt_time_obj = datetime.now()
# বর্তমান ডেটা টাইম প্রিন্ট
print(dt_time_obj)
# অবজেক্ট ক্লাস খুঁজে বের করা
print('Object Class :- ', type(dt_time_obj))
আউটপুট
উপরোক্ত কোডটি রান করলে নিচের ফলাফল পাবেন:
2020-01-22 09:33:02.693863 Object Class :-
Datetime এবং স্ট্রিং
আমরা strptime এবং strftime মেথড ব্যবহার করে স্ট্রিংকে ডেটা-টাইমে এবং ডেটা-টাইমকে স্ট্রিংএ কনভার্ট করতে পারি। এই কনভার্সন জরুরি যখন আমরা বিভিন্ন ডেটা সোর্স হ্যান্ডেল করি যেখানে ডেটা পাইথনের প্রয়োজনীয় ফরম্যাটে নাও থাকতে পারে। নিচের উদাহরণে আমরা একটি স্ট্রিং নিলাম এবং সেটিকে ডেটা-টাইমে কনভার্ট করলাম। এবং বিপরীত কাজও করলাম।
উদাহরণ
from datetime import datetime
dt_string = '2020-1-30 2-52-59'
# স্ট্রিং থেকে ডেট অবজেক্ট তৈরি
date_val = datetime.strptime(dt_string, "%Y-%m-%d %H-%M-%S")
print(date_val)
print('Class: ', type(date_val))
print("\n")
# ডেট অবজেক্ট থেকে স্ট্রিং তৈরি
date_val_str = datetime.strftime(date_val, "%Y-%m-%d %H-%M-%S")
print(date_val_str)
print('Class: ', type(date_val_str))
আউটপুট
উপরোক্ত কোডটি রান করলে নিচের ফলাফল পাবেন:
2020-01-30 02:52:59 Class: 2020-01-30 02-52-59 Class:
ডেটা টাইম ভ্যালুর অংশগুলো এক্সট্রাক্ট করা
আমরা ডিরেক্টিভ এবং strftime মেথড ব্যবহার করে ডেটার বিভিন্ন পার্ট এক্সট্রাক্ট করতে পারি। নিচে কিছু ডিরেক্টিভ এবং তাদের উদ্দেশ্যের লিস্ট দেওয়া হলো। সম্পূর্ণ লিস্টের জন্য পাইথন ডকুমেন্টেশন দেখুন।
| Directive | ব্যবহার |
|---|---|
| %A | সপ্তাহের দিন |
| %B | মাস |
| %M | মিনিট |
| %Y | বছর |
| %d | মাসের তারিখ |
নিচের উদাহরণে ডিরেক্টিভগুলো কীভাবে ব্যবহার করা হয় তা দেখানো হলো।
উদাহরণ
from datetime import datetime
dt_string = '2020-1-30 2-52-59'
# স্ট্রিং থেকে ডেট অবজেক্ট তৈরি
date_val = datetime.strptime(dt_string, "%Y-%m-%d %H-%M-%S")
# বছর, সপ্তাহের দিনের নাম, মাসের নাম, মাসের তারিখ রিটার্ন
print(date_val.year)
print(date_val.strftime("%d"))
print(date_val.strftime("%B"))
print(date_val.strftime("%A"), "\n")
আউটপুট
উপরোক্ত কোডটি রান করলে নিচের ফলাফল পাবেন:
2020 30 January Thursday
ডেটা টাইম এরিথমেটিক (গণিত)
এখন ডেটা এবং টাইম নিয়ে ক্যালকুলেশনের উদাহরণ দেখব। আমরা একটি দেয়া ডেটায় দিন, ঘন্টা ইত্যাদি যোগ বা বিয়োগ করতে পারি। এছাড়া দুটি ডেটা ইনপুট নিয়ে সেগুলোর ওপর বিভিন্ন অপারেশন প্রয়োগ করতে পারি।
TimeDelta ব্যবহার করে
উদাহরণ
# import datetime
from datetime import *
# বর্তমান সময় বের করা
dt_time_today = datetime.now()
print("Today's date: ", str(dt_time_today))
# বর্তমানে ৫ দিন যোগ করা
new_date = dt_time_today + timedelta(days=5)
print('After 5 days: ', new_date)
# বর্তমান থেকে ২ সপ্তাহ বিয়োগ
two_weeks_back = dt_time_today - timedelta(weeks=2)
print('Two weeks ago: ', two_weeks_back)
print('two_weeks_back object type: ', type(two_weeks_back))
আউটপুট
উপরোক্ত কোডটি রান করলে নিচের ফলাফল পাবেন:
Today's date: 2020-01-29 12:38:03.290795 After 5 days: 2020-02-03 12:38:03.290795 Two weeks ago: 2020-01-15 12:38:03.290795 two_weeks_back object type:
অপারেটর ব্যবহার করে
দুটি ডেটার মধ্যে কিছু অপারেটর প্রয়োগ করা যায়। দুটি ডেটার পার্থক্য মাইনাস অপারেটর দিয়ে বের করা যায় এবং ডেটা কম্পেয়ার লজিক্যাল অপারেটর দিয়ে করা যায়।
উদাহরণ
from datetime import datetime
# দেওয়া ডেটা
date1 = datetime(2018, 5, 12, 8, 11, 53)
date2 = datetime(2017, 6, 16, 12, 43, 27)
# দুটি ডেটার পার্থক্য
date_diff = date1 - date2
print("Difference: ", date_diff)
# দুটি ডেটা কম্পেয়ার
print(date1 < date2)
আউটপুট
উপরোক্ত কোডটি রান করলে নিচের ফলাফল পাবেন:
Difference: 329 days, 19:28:26 False