دروس الوحدة (2/4)
التاريخ والوقت: التواريخ والأوقات
توفر الوحدة 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 onlyالحساب مع timedelta
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 (ليس 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 شهر مكون من رقمين، %d يوم مكون من رقمين،
%H 24 ساعة، %M دقيقة، %S ثانية.
التحليل: strptime
العكس: سلسلة → وقت التاريخ، بالنظر إلى النمط المتوقع.
datetime.strptime("01/01/2025", "%d/%m/%Y")
# datetime.datetime(2025, 1, 1, 0, 0)ايزو 8601
لتبادل البيانات، يفضل دائمًا تنسيق ISO 8601 (YYYY-MM-DDTHH:MM:SS):
ora.isoformat() # '2025-01-01T14:30:00'
datetime.fromisoformat("2025-01-01T14:30:00")المناطق الزمنية وأوقات التاريخ على علم
بشكل افتراضي، كائنات datetime في Python ساذجة (أي أنها لا تحتوي على معلومات المنطقة الزمنية). بالنسبة للتطبيقات الواقعية، من الأفضل جعلها مدركة عن طريق تعيين معلومات المنطقة الزمنية عبر datetime.timezone.utc أو استخدام الوحدة zoneinfo.
جربه
احسب التاريخ بعد 30 يومًا من 1 يناير 2025 وقم بتنسيقه بالشكل "YYYY-MM-DD" في المتغير "date_str". تقييم "date_str".
إظهار التلميح
قاعدة + دلتا الوقت (الأيام = 30)، ثم .سترفتايم
الحل متاح بعد 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 من المحاولات