मुख्य सामग्री पर जाएं
मॉड्यूल 8 · पाठ 2 का 4पाठ्यक्रम में 30/36~12 min
मॉड्यूल पाठ (2/4)

दिनांकसमय: दिनांक और समय

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 (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)

आईएसओ 8601

डेटा विनिमय के लिए हमेशा ISO 8601 प्रारूप (YYYY-MM-DDTHH:MM:SS) को प्राथमिकता दें:

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

समय क्षेत्र और जागरूक दिनांक समय

डिफ़ॉल्ट रूप से, Python में datetime ऑब्जेक्ट निष्क्रिय होते हैं (अर्थात उनमें कोई समयक्षेत्र जानकारी नहीं होती है)। वास्तविक दुनिया के अनुप्रयोगों के लिए, datetime.timezone.utc के माध्यम से समयक्षेत्र जानकारी सेट करके या zoneinfo मॉड्यूल का उपयोग करके उन्हें जागरूक बनाना सबसे अच्छा अभ्यास है।

इसे अजमाएं

व्यायाम#python.m8.l2.e1
प्रयास: 0लोड हो रहा है...

1 जनवरी 2025 के 30 दिन बाद की तारीख की गणना करें और इसे वेरिएबल `date_str` में 'YYYY-MM-DD' के रूप में प्रारूपित करें। `date_str` का मूल्यांकन करें।

संपादक लोड हो रहा है...
संकेत दिखाएँ

बेस + टाइमडेल्टा(दिन=30), फिर .strftime

3 प्रयासों के बाद समाधान उपलब्ध है

व्यायाम की समीक्षा करें

व्यायाम#python.m8.l2.e2
प्रयास: 0लोड हो रहा है...

स्ट्रिंग `s = '15/03/2025'` को देखते हुए, इसे वेरिएबल `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 प्रयासों के बाद समाधान उपलब्ध है