ماڈیول اسباق (2/4)
datetime: تاریخیں اور اوقات
datetime ماڈیول تاریخوں اور اوقات کی نمائندگی کے لیے کلاسز فراہم کرتا ہے۔
تین اہم طبقات
date— صرف تاریخ (سال، مہینہ، دن)time— صرف وقت (گھنٹہ، منٹ، سیکنڈ، مائیکرو سیکنڈ)datetime— تاریخ + وقت ایک ساتھtimedelta— ایک دورانیہ (دو انسٹنٹ کے درمیان فرق)
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
datetime.now() # current date + time
date.today() # current date onlytimedelta کے ساتھ ریاضی
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.0timedelta قبول کرتا ہے days, seconds, microseconds, milliseconds,
minutes, hours, weeks (NOT months یا years، جو مبہم ہیں)۔
فارمیٹنگ: strftime
ڈیٹ ٹائم → سٹرنگ کو پیٹرن کے مطابق تبدیل کرتا ہے۔
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، متوقع پیٹرن کے پیش نظر۔
datetime.strptime("01/01/2025", "%d/%m/%Y")
# datetime.datetime(2025, 1, 1, 0, 0)ISO 8601
ڈیٹا ایکسچینج کے لیے ہمیشہ ISO 8601 فارمیٹ کو ترجیح دیں (YYYY-MM-DDTHH:MM:SS):
ora.isoformat() # '2025-01-01T14:30:00'
datetime.fromisoformat("2025-01-01T14:30:00")ٹائم زونز اور آگاہی تاریخ کے اوقات
پہلے سے طے شدہ طور پر، Python میں datetime آبجیکٹ بے ہودہ ہوتے ہیں (یعنی ان میں ٹائم زون کی معلومات نہیں ہوتی ہیں)۔ حقیقی دنیا کی ایپلی کیشنز کے لیے، datetime.timezone.utc کے ذریعے ٹائم زون کی معلومات ترتیب دے کر یا zoneinfo ماڈیول کا استعمال کرکے انہیں آگاہ کرنا بہترین عمل ہے۔
اسے آزمائیں
1 جنوری 2025 کے 30 دن بعد کی تاریخ کا حساب لگائیں اور اسے متغیر `تاریخ_str` میں 'YYYY-MM-DD' کے بطور فارمیٹ کریں۔ `date_str` کا اندازہ کریں۔
اشارہ دکھائیں۔
base + timedelta(days=30)، پھر .strftime
3 کوششوں کے بعد حل دستیاب ہے۔
ورزش کا جائزہ لیں۔
سٹرنگ `s = '15/03/2025'` کو دیکھتے ہوئے، اسے strptime کے ساتھ متغیر `d` (ڈیٹ ٹائم آبجیکٹ) میں پارس کریں۔ ہفتہ کے عددی دن کا اندازہ کریں `d.weekday()` (0=Mon, 6=Sun)۔
اشارہ دکھائیں۔
strptime اطالوی فارمیٹ پیٹرن کے ساتھ۔
3 کوششوں کے بعد حل دستیاب ہے۔
اضافی چیلنج
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 کوششوں کے بعد حل دستیاب ہے۔