মূল কন্টেন্টে যান
মডিউল 8 · 2-এর পাঠ 4কোর্সে 30/36~12 min
মডিউল পাঠ (2/4)

datetime: তারিখ এবং সময়

datetime মডিউল তারিখ এবং সময় উপস্থাপন করার জন্য ক্লাস প্রদান করে।

তিনটি প্রধান শ্রেণী

  • date — শুধুমাত্র তারিখ (বছর, মাস, দিন)
  • time — শুধুমাত্র সময় (ঘণ্টা, মিনিট, সেকেন্ড, মাইক্রোসেকেন্ড)
  • datetime — তারিখ + সময় একসাথে
  • timedelta — একটি সময়কাল (দুটি তাৎক্ষণিকের মধ্যে পার্থক্য)
Python
from datetime import date, time, datetime, timedelta

date(2025, 1, 1)                  # datetime.date(2025, 1, 1)
time(14, 30, 0)                   # datetime.time(14, 30)
datetime(2025, 1, 1, 14, 30, 0)   # datetime.datetime(2025, 1, 1, 14, 30)

"এখন": now এবং today

Python
datetime.now()        # current date + time
date.today()          # current date only

timedelta এর সাথে পাটিগণিত

Python
from datetime import datetime, timedelta

ora = datetime(2025, 1, 1, 12, 0)
domani = ora + timedelta(days=1)
una_ora_fa = ora - timedelta(hours=1)

# difference between two datetimes -> timedelta
delta = domani - ora
delta.days        # 1
delta.total_seconds()   # 86400.0

timedelta গ্রহণ করে days, seconds, microseconds, milliseconds, minutes, hours, weeks (NOT months বা years, যা অস্পষ্ট)

বিন্যাস: strftime

একটি প্যাটার্ন অনুযায়ী তারিখ সময় → স্ট্রিংকে রূপান্তরিত করে।

Python
ora = datetime(2025, 1, 1, 14, 30)
ora.strftime("%Y-%m-%d")         # '2025-01-01'
ora.strftime("%d/%m/%Y %H:%M")   # '01/01/2025 14:30'
ora.strftime("%A %d %B %Y")      # 'Wednesday 01 January 2025' (locale-dependent)

সর্বাধিক ব্যবহৃত নির্দেশাবলী: %Y 4-সংখ্যার বছর, %m 2-সংখ্যার মাস, %d 2-সংখ্যার দিন, %H 24 ঘন্টা, %M মিনিট, %S সেকেন্ড।

পার্সিং: strptime

বিপরীত: স্ট্রিং → তারিখ সময়, প্রত্যাশিত প্যাটার্ন দেওয়া।

Python
datetime.strptime("01/01/2025", "%d/%m/%Y")
# datetime.datetime(2025, 1, 1, 0, 0)

ISO 8601

ডেটা বিনিময়ের জন্য সর্বদা ISO 8601 ফরম্যাট পছন্দ করুন (YYYY-MM-DDTHH:MM:SS):

Python
ora.isoformat()                 # '2025-01-01T14:30:00'
datetime.fromisoformat("2025-01-01T14:30:00")

টাইমজোন এবং সচেতন তারিখের সময়

ডিফল্টরূপে, পাইথনে datetime অবজেক্টগুলি নিষ্পাপ (অর্থাৎ সেগুলিতে কোনো টাইমজোন তথ্য নেই)। বাস্তব-বিশ্বের অ্যাপ্লিকেশনের জন্য, datetime.timezone.utc এর মাধ্যমে টাইমজোন তথ্য সেট করে বা zoneinfo মডিউল ব্যবহার করে তাদের সচেতন করা সবচেয়ে ভালো অনুশীলন।

চেষ্টা করে দেখুন

ব্যায়াম#python.m8.l2.e1
প্রচেষ্টা: 0লোড হচ্ছে...

1 জানুয়ারী, 2025 এর 30 দিন পরে তারিখটি গণনা করুন এবং এটিকে ভেরিয়েবল `date_str`-এ 'YYYY-MM-DD' হিসাবে ফর্ম্যাট করুন৷ `date_str` মূল্যায়ন করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

base + timedelta(days=30), তারপর .strftime

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

ব্যায়াম পর্যালোচনা করুন

ব্যায়াম#python.m8.l2.e2
প্রচেষ্টা: 0লোড হচ্ছে...

স্ট্রিং `s = '15/03/2025'` দেওয়া, এটিকে strptime দিয়ে পরিবর্তনশীল `d` (ডেটটাইম অবজেক্ট) এ পার্স করুন। সপ্তাহের পূর্ণসংখ্যা দিন মূল্যায়ন করুন `d.weekday()` (0=সোম, 6=রবি)।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

ইতালীয়-ফরম্যাট প্যাটার্ন সহ strptime।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

অতিরিক্ত চ্যালেঞ্জ

ব্যায়াম#python.m8.l2.e3
প্রচেষ্টা: 0লোড হচ্ছে...

Import `date` from the `datetime` module. Calculate the difference in days between December 25, 2026 (`date(2026, 12, 25)`) and December 20, 2026 (`date(2026, 12, 20)`). Store the integer number of days (using the `.days` attribute of the delta) in `days_diff`. Finally, evaluate the variable.

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

The difference between two dates returns a timedelta. Access the integer days with delta.days.

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ