مرکزی مواد پر جائیں
ماڈیول 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

اس کے برعکس: string → datetime، متوقع پیٹرن کے پیش نظر۔

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

ٹائم زونز اور آگاہی تاریخ کے اوقات

پہلے سے طے شدہ طور پر، Python میں datetime آبجیکٹ بے ہودہ ہوتے ہیں (یعنی ان میں ٹائم زون کی معلومات نہیں ہوتی ہیں)۔ حقیقی دنیا کی ایپلی کیشنز کے لیے، datetime.timezone.utc کے ذریعے ٹائم زون کی معلومات ترتیب دے کر یا zoneinfo ماڈیول کا استعمال کرکے انہیں آگاہ کرنا بہترین عمل ہے۔

اسے آزمائیں

ورزش#python.m8.l2.e1
کوششیں: 0لوڈ ہو رہا ہے…

1 جنوری 2025 کے 30 دن بعد کی تاریخ کا حساب لگائیں اور اسے متغیر `تاریخ_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=Mon, 6=Sun)۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

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 کوششوں کے بعد حل دستیاب ہے۔