التعامل مع الوقت والتاريخ في بايثون: دليلك الكامل لدوال datetime السحرية

التعامل مع الوقت والتاريخ في بايثون

مرحباً بك في مقال منفصل وممتع خارج سلسلة الدروس الأساسية! 🎉

سنتعرف اليوم على واحدة من أكثر الوحدات أهمية في حياة أي مبرمج بايثون: وحدة datetime. سواء كنت تبني تطبيقاً للمواعيد، أو تحسب العمر، أو تنشئ ملفات بسجلات زمنية، ستجد نفسك تستخدم هذه الوحدة باستمرار. للأسف، كثير من المبتدئين يجدونها مربكة في البداية. لكن لا تقلق! بنهاية هذا الدليل، ستتلاعب بالوقت والتاريخ كما تشاء. ⏳✨

💻 تطبيق فوري: يمكنك تجربة جميع الأكواد مباشرة على محرر بايثون العرب دون الحاجة لتثبيت أي شيء.


🤔 لماذا نحتاج وحدة datetime؟

تخيل أنك تبني برنامجاً يحتاج إلى:
  • طباعة التاريخ والوقت الحاليين.
  • حساب عدد الأيام حتى موعد حدث معين.
  • تسجيل وقت تنفيذ عملية ما.
  • التعامل مع تواريخ بلدان مختلفة (مناطق زمنية).
كل هذا لا توفره دوال بايثون المدمجة الأساسية، بل تحتاج إلى استيراد الوحدة السحرية datetime.
import datetime

1. الحصول على التاريخ والوقت الحاليين

أسهل طريقة لتبدأ هي أن تسأل بايثون: "كم الساعة الآن؟"

التاريخ الحالي فقط:

import datetime

today = datetime.date.today()
print(today) # e.g., 2026-04-27

التعامل مع الوقت والتاريخ في بايثون

الوقت والتاريخ معاً (حتى الميكروثانية):

now = datetime.datetime.now()
print(now) # e.g., 2026-04-27 18:45:12.123456

مذهل! لقد حصلت على التاريخ والوقت في سطر واحد. لكن ماذا لو أردت أجزاء محددة فقط؟

print(now.year) # 2026
print(now.month) # 4
print(now.day) # 27
print(now.hour) # 18
print(now.minute) # 45
print(now.second) # 12

التعامل مع الوقت والتاريخ في بايثون


2. إنشاء تاريخ أو وقت محدد

ماذا لو أردت تاريخ ميلادك، وليس التاريخ الحالي؟ استخدم date() أو datetime() مع إدخال القيم يدوياً:

birthday = datetime.date(1995, 8, 15) # سنة, شهر, يوم
print(birthday) # 1995-08-15
specific_time = datetime.datetime(2026, 4, 27, 14, 30, 0)
print(specific_time) # 2026-04-27 14:30:00

انتبه لترتيب المعاملات: سنة, شهر, يوم, ساعة, دقيقة, ثانية, ميكروثانية.


3. تنسيق التاريخ والوقت بشكل جميل (strftime)

الأرقام الخام جيدة، لكن المستخدم يريد شيئاً مقروءاً. هنا يأتي دور strftime() (String Format Time). إنها مثل ترجمة التاريخ إلى أي لغة تريدها.

now = datetime.datetime.now()
# تنسيقات شائعة:
print(now.strftime("%Y-%m-%d")) # 2026-04-27
print(now.strftime("%d/%m/%Y")) # 27/04/2026
print(now.strftime("%A, %d %B %Y")) # Monday, 27 April 2026
print(now.strftime("%I:%M %p")) # 06:45 PM

جدول بأهم الرموز:

الرمزالمعنىمثال
%Yالسنة كاملة2026
%mالشهر رقماً04
%Bاسم الشهرApril
%dاليوم رقماً27
%Aاسم اليومMonday
%Hساعة (24)18
%Iساعة (12)06
%Mالدقائق45
%Sالثواني12
%pAM/PMPM

4. تحويل النص إلى تاريخ (strptime)

تخيل أن المستخدم يدخل تاريخاً كنص (مثل "15-08-1995") وأنت تريد تحويله إلى كائن تاريخ حقيقي. استخدم strptime() (String Parse Time):

date_string = "15-08-1995"
birthday = datetime.datetime.strptime(date_string, "%d-%m-%Y")
print(birthday) # 1995-08-15 00:00:00
print(type(birthday)) # <class 'datetime.datetime'>

هنا تخبر بايثون: "النص الذي أعطيتك إياه مكتوب بهذا الترتيب (يوم-شهر-سنة)، حوله إلى تاريخ من فضلك." 🎩


5. المدة الزمنية (timedelta) – السفر عبر الزمن

كيف تحسب عمرك بالأيام؟ أو عدد الأيام حتى رمضان القادم؟ تحتاج إلى timedelta، وهي تمثل فرقاً بين تاريخين.

from datetime import datetime, timedelta
today = datetime.now()
birthday = datetime(1995, 8, 15)
age = today - birthday
print(age) # 11000 days, 5:30:12.123... (مثال)
print(age.days) # عدد الأيام فقط
# إضافة أو طرح وقت
one_week_later = today + timedelta(weeks=1)
yesterday = today - timedelta(days=1)
print(yesterday.strftime("%Y-%m-%d"))

يمكنك تمرير dayssecondsminuteshoursweeks إلى timedelta. إنها أداتك للسفر عبر الزمن! 🔮


6. التعامل مع المناطق الزمنية (Timezone)

بشكل افتراضي، كائنات datetime تكون "naive" (غير مدركة للمنطقة الزمنية). للتعامل مع فروق التوقيت، تحتاج إلى وحدة zoneinfo (متوفرة في بايثون 3.9+).

from datetime import datetime
from zoneinfo import ZoneInfo
# توقيت الرياض
riyadh_time = datetime.now(ZoneInfo("Asia/Riyadh"))
print(riyadh_time)
# توقيت نيويورك
ny_time = datetime.now(ZoneInfo("America/New_York"))
print(ny_time)
# تحويل توقيت
print(riyadh_time.astimezone(ZoneInfo("America/New_York")))

هذا ينقذك في تطبيقات العالم الحقيقي حيث المستخدمون موزعون حول الكرة الأرضية. 🌍


🧪 جرّب بنفسك: مشروع صغير – عدّاد تنازلي

انسخ هذا الكود في محرر بايثون العرب واستمتع:

from datetime import datetime, timedelta
# العد التنازلي لرأس السنة 2027
new_year = daََtetime(2027, 1, 1)
now = datetime.now()
remaining = new_year - now
print("🎆 العد التنازلي لرأس السنة 2027:"كلما شغّلته، ترى الأيام تقترب!

🎁 خلاصة: أنت الآن سيد الزمن في بايثون

اليوم أضفت إلى جعبتك أداة لا غنى عنها. بإتقانك datetime، يمكنك:
  • الحصول على الوقت الحالي والتاريخ.
  • إنشاء تواريخ محددة.
  • تنسيق التواريخ بأي طريقة تخطر ببالك.
  • حساب الفروقات الزمنية بذكاء.
  • التعامل مع مناطق زمنية مختلفة.
ابدأ باستخدامها في مشاريعك الصغيرة، وستتفاجأ كم تصبح الأمور سهلة عندما تملك القدرة على التحكم بالوقت! ⏳🚀

إرسال تعليق

أحدث أقدم