📚 استخدام وحدة datetime في بايثون
المفاهيم الأساسية
سمة (Attribute) الدالة: خاصية أو قيمة مرتبطة بكائن (مثل تاريخ) يمكن استرجاعها بعد استدعاء الدالة.
دالة date.replace(): تُستخدم لاستبدال محتويات كائن date بالمعاملات المحددة (مثل السنة).
خريطة المفاهيم
```markmap
المكتبات والنماذج البرمجية في بايثون
مفهوم النموذج البرمجي
تعريف
- حزمة ملفات تحتوي مقاطع برمجية
- امتدادها .py
- يتم استيرادها لتنفيذ وظائف
مصادر النماذج
المكتبة القياسية (Standard library)
#### تعريف
- تُثبَّت تلقائياً مع بايثون
- جزء أساسي من اللغة
- تحتوي على أكثر من 200 نموذج برمجي
#### طرق الاستيراد
##### 1. استيراد الكل
- الأمر: `from module_name import *`
##### 2. استيراد دوال من نموذج برمجي
- الأمر: `from module_name import function_a, function_b, function_c`
##### 3. استيراد النماذج البرمجية
- الأمر: `import module_name`
##### أمثلة على نماذجها
###### math
- الهدف: الوصول إلى دوال وثوابت رياضية شائعة
- طريقة الاستيراد: `import math`
- أمثلة على استخدامه:
-
الدوال الأكبتان (التقريب)
- `math.ceil(x)`: تقريب الرقم `x` إلى أقرب عدد صحيح أكبر (السقف).
- مثال: `math.ceil(10.1657)` ← 11
- `math.floor(x)`: تقريب الرقم `x` إلى أقرب عدد صحيح أصغر (الأرضية).
- مثال: `math.floor(10.1657)` ← 10
- مثال مع الأرقام السالبة: `math.floor(-10.1657)` ← -11
###### tkinter
- الهدف: إنشاء واجهات رسومية (GUI).
- طريقة الاستيراد: `from tkinter import *` (حالة نموذجية لاستيراد الكل بسبب كثرة الدوال المستخدمة).
- خطوات إنشاء نافذة أساسية:
1. `window = Tk()`: إنشاء كائن النافذة.
2. `window.title("عنوان")`: تحديد عنوان النافذة.
3. `window.geometry("عرضxارتفاع")`: تحديد حجم النافذة.
4. `window.mainloop()`: إبقاء النافذة مفتوحة.
###### time
- الهدف: توفير دوال للعمل مع الأوقات.
- طريقة الاستيراد: `import time`
- أمثلة على استخدامه:
- معرفة الوقت بالساعة والدقيقة (تنسيق 24 ساعة) واليوم من الأسبوع وما إذا كان صباحًا أم مساءً.
- الأمر: `print(time.strftime("%H:%M"), time.strftime("%A %p"))`
- مثال على المخرجات: `10:49 Wednesday AM`
###### datetime
- الهدف: التعامل مع التواريخ والوقت بكثرة في البرامج المختلفة.
- طريقة الاستيراد: `import datetime`
- أمثلة على استخدامه:
- معرفة تاريخ اليوم.
- الأمر: `print(datetime.date.today())`
- مثال على المخرجات: `2023-11-15`
- يمكن استخراج السنة والشهر واليوم من التاريخ.
- استخدام سمة (Attribute) الدالة:
- الصيغة العامة: `module_name.function_name().attribute_name`
- مثال لاستخراج اليوم: `datetime.date.today().day`
- مثال لاستخراج الشهر: `datetime.date.today().month`
- مثال لاستخراج السنة: `datetime.date.today().year`
- حساب الأيام المتبقية لحدث (مثال: يوم التأسيس):
1. استيراد `date` من `datetime`.
2. الحصول على تاريخ اليوم: `today = date.today()`.
3. تحديد تاريخ الحدث: `foundationDay = date(today.year, 2, 22)`.
4. التحقق إذا مضى الحدث هذا العام باستخدام `date.replace()`:
- `if foundationDay < today: foundationDay = foundationDay.replace(year=today.year + 1)`
5. حساب الفرق بالأيام: `time_to_foundationDay = foundationDay - today`.
6. طباعة النتيجة: `print("Days left:", time_to_foundationDay.days)`.
```
نقاط مهمة
- يمكن استخراج اليوم والشهر والسنة من تاريخ اليوم باستخدام سمات دالة `date.today()`.
- تُستخدم دالة `date.replace()` لتعديل سنة (أو شهر أو يوم) كائن تاريخ محدد.
- يمكن حساب الفرق بين تاريخين، والنتيجة تحتوي على سمة `.days` لاستخراج عدد الأيام فقط.
- مثال تطبيقي: حساب الأيام المتبقية لذكرى يوم التأسيس (22 فبراير).