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

أساسيات بايثون 27 شرح مكتبة datetime في Python للتعامل مع التاريخ والوقت للمبتدئين

في الدروس السابقة من كورس أساسيات بايثون تعلمنا الكثير من المفاهيم المهمة مثل التعامل مع الملفات، استخدام المكتبات، واستدعاء الوحدات باستخدام import. وفي هذا الدرس سننتقل إلى مكتبة مهمة جدًا في المشاريع العملية، وهي مكتبة datetime.

مكتبة datetime في Python تُستخدم للتعامل مع التاريخ والوقت، مثل معرفة تاريخ اليوم، طباعة الوقت الحالي، حساب الفرق بين تاريخين، إضافة أيام أو طرحها، تنسيق التاريخ بطريقة مفهومة، وبناء برامج تعتمد على المواعيد والتواريخ.

{getToc} $title={محتوى المقال}

الفكرة ببساطة: مكتبة datetime تجعل Python قادرة على التعامل مع التاريخ والوقت كقيم حقيقية يمكن حسابها ومقارنتها، وليس كنصوص عادية فقط. {alertInfo}

هذا الدرس مهم جدًا إذا كنت تريد بناء مشاريع Python حقيقية، لأن أغلب البرامج تحتاج بشكل أو بآخر إلى التعامل مع الوقت والتاريخ، مثل برامج المهام، الفواتير، التقارير، الحضور والانصراف، المتاجر الإلكترونية، وبرامج حساب العمر أو المدة المتبقية.

ما هي مكتبة datetime في Python؟

مكتبة datetime هي مكتبة قياسية تأتي مع Python، لذلك لا تحتاج إلى تثبيتها باستخدام pip. بمجرد تثبيت Python يمكنك استخدامها مباشرة داخل الكود.

تساعدك مكتبة datetime على التعامل مع:

  • التاريخ مثل السنة والشهر واليوم.
  • الوقت مثل الساعة والدقيقة والثانية.
  • التاريخ والوقت معًا.
  • حساب الفرق بين تاريخين.
  • إضافة مدة زمنية إلى تاريخ معين.
  • طرح مدة زمنية من تاريخ معين.
  • تنسيق التاريخ ليظهر بشكل مفهوم للمستخدم.
  • تحويل النصوص إلى تواريخ عند الحاجة.

مثال بسيط للحصول على تاريخ اليوم:

import datetime

today = datetime.date.today()

print(today)

هذا الكود يطبع تاريخ اليوم حسب التاريخ الموجود في جهازك أو بيئة التشغيل التي يعمل عليها البرنامج.

لماذا نحتاج إلى datetime بدل كتابة التاريخ كنص؟

قد تسأل: لماذا لا أكتب التاريخ كنص عادي هكذا؟

today = "2026-06-09"

هذا ممكن، لكنه لا يجعل Python تفهم أن هذه القيمة تاريخ حقيقي. بالنسبة لبايثون، هذا مجرد نص. لا يمكنك بسهولة إضافة أيام إليه أو حساب الفرق بينه وبين تاريخ آخر إلا بعد تحويله إلى كائن تاريخ.

أما عند استخدام datetime، يصبح التاريخ قيمة قابلة للحساب:

import datetime

today = datetime.date.today()
after_week = today + datetime.timedelta(days=7)

print(after_week)
نصيحة مهمة: إذا كنت تريد فقط عرض تاريخ كنص، يمكن أن يكون النص كافيًا. لكن إذا كنت تريد حسابات، مقارنة، إضافة أيام، أو طرح تواريخ، استخدم datetime. {alertSuccess}

استدعاء مكتبة datetime

توجد أكثر من طريقة لاستدعاء مكتبة datetime. الطريقة الأولى هي استيراد المكتبة كاملة:

import datetime

وبعدها نستخدم اسم المكتبة قبل الوصول إلى الأدوات الموجودة داخلها:

import datetime

now = datetime.datetime.now()

print(now)

وقد تبدو كتابة datetime.datetime غريبة في البداية، لكن الأولى هي اسم المكتبة، والثانية هي الكلاس الموجود داخل المكتبة.

الطريقة الثانية هي استدعاء الجزء المطلوب فقط:

from datetime import datetime

now = datetime.now()

print(now)

والطريقة الثالثة هي استدعاء أكثر من عنصر تحتاجه:

from datetime import date, datetime, timedelta

today = date.today()
now = datetime.now()
tomorrow = today + timedelta(days=1)

print(today)
print(now)
print(tomorrow)
للمبتدئين: استخدم الطريقة الأولى import datetime في البداية حتى تفهم مصدر كل دالة بوضوح، ثم يمكنك لاحقًا استخدام from datetime import ... عندما تصبح مرتاحًا أكثر. {alertInfo}

الفرق بين date و time و datetime و timedelta

داخل مكتبة datetime توجد عناصر مهمة يجب أن تفرق بينها:

العنصر وظيفته مثال
date يمثل التاريخ فقط: سنة، شهر، يوم. 2026-06-09
time يمثل الوقت فقط: ساعة، دقيقة، ثانية. 14:30:00
datetime يمثل التاريخ والوقت معًا. 2026-06-09 14:30:00
timedelta يمثل مدة زمنية أو فرقًا بين تاريخين. 7 أيام

فهم هذه العناصر يجعل التعامل مع المكتبة أسهل بكثير؛ لأنك ستعرف متى تستخدم التاريخ فقط، ومتى تحتاج التاريخ والوقت معًا، ومتى تحتاج مدة زمنية.

الحصول على تاريخ اليوم باستخدام date.today

شرح معرفة التاريخ والوقت الحالي في Python باستخدام مكتبة datetime

إذا أردت معرفة تاريخ اليوم فقط بدون الوقت، استخدم date.today().

import datetime

today = datetime.date.today()

print("تاريخ اليوم:", today)

قد تظهر النتيجة مثل:

تاريخ اليوم: 2026-06-09

لاحظ أن الشكل الافتراضي للتاريخ يكون غالبًا بالترتيب:

  • السنة.
  • الشهر.
  • اليوم.

وهذا الشكل مناسب للبرمجة لأنه واضح ومنظم، حتى لو كان المستخدم العربي معتادًا على كتابة اليوم أولًا ثم الشهر ثم السنة.

استخراج السنة والشهر واليوم من التاريخ

بعد الحصول على التاريخ، يمكنك استخراج أجزاء محددة منه مثل السنة أو الشهر أو اليوم.

import datetime

today = datetime.date.today()

print("السنة:", today.year)
print("الشهر:", today.month)
print("اليوم:", today.day)

هذه الخصائص مفيدة إذا كنت تريد بناء شرط يعتمد على السنة أو الشهر، مثل عرض رسالة مختلفة في شهر معين، أو حساب عمر تقريبي من سنة الميلاد.

إنشاء تاريخ محدد داخل Python

ليس شرطًا أن تستخدم تاريخ اليوم دائمًا. يمكنك إنشاء تاريخ معين بنفسك باستخدام date.

import datetime

birthday = datetime.date(2000, 5, 15)

print(birthday)

هذا الكود ينشئ تاريخًا محددًا وهو 15 مايو 2000.

انتبه: عند إنشاء تاريخ باستخدام date يكون الترتيب هكذا: السنة، الشهر، اليوم. وليس اليوم، الشهر، السنة. {alertWarning}

مثال آخر لإنشاء تاريخ موعد نهائي:

import datetime

deadline = datetime.date(2026, 12, 31)

print("الموعد النهائي:", deadline)

الحصول على الوقت والتاريخ الحالي معًا

إذا أردت الحصول على التاريخ والوقت الحاليين معًا، استخدم datetime.datetime.now().

import datetime

now = datetime.datetime.now()

print(now)

قد تظهر النتيجة مثل:

2026-06-09 14:30:15.123456

هذه النتيجة تحتوي على:

  • السنة.
  • الشهر.
  • اليوم.
  • الساعة.
  • الدقيقة.
  • الثانية.
  • الميكروثانية.

استخراج الساعة والدقيقة والثانية

كما يمكن استخراج السنة والشهر واليوم، يمكن أيضًا استخراج الساعة والدقيقة والثانية من datetime.

import datetime

now = datetime.datetime.now()

print("الساعة:", now.hour)
print("الدقيقة:", now.minute)
print("الثانية:", now.second)

هذا مفيد في البرامج التي تحتاج إلى تسجيل وقت تنفيذ أمر معين، مثل برنامج يسجل وقت دخول المستخدم أو وقت إنشاء تقرير.

إنشاء وقت محدد باستخدام time

إذا أردت تمثيل الوقت فقط بدون تاريخ، يمكنك استخدام time.

import datetime

meeting_time = datetime.time(9, 30, 0)

print(meeting_time)

الناتج:

09:30:00

هذا المثال يمثل موعدًا في الساعة التاسعة والنصف صباحًا.

تنسيق التاريخ باستخدام strftime

مثال تنسيق التاريخ في Python باستخدام strftime من مكتبة datetime

الشكل الافتراضي للتاريخ في Python قد لا يكون مناسبًا دائمًا للقارئ، لذلك نستخدم strftime() لتنسيق التاريخ بالطريقة التي نريدها.

import datetime

today = datetime.date.today()

formatted_date = today.strftime("%d/%m/%Y")

print(formatted_date)

قد تظهر النتيجة مثل:

09/06/2026

هنا قمنا بعرض التاريخ بالشكل الأقرب للقارئ العربي: اليوم ثم الشهر ثم السنة.

أشهر رموز strftime

الرمز المعنى مثال
%d اليوم برقم من خانتين 09
%m الشهر برقم من خانتين 06
%Y السنة كاملة 2026
%y آخر رقمين من السنة 26
%H الساعة بنظام 24 ساعة 14
%I الساعة بنظام 12 ساعة 02
%M الدقيقة 30
%S الثانية 15
%A اسم اليوم Tuesday
%B اسم الشهر June

تنسيق التاريخ والوقت معًا

يمكنك تنسيق التاريخ والوقت معًا باستخدام strftime() أيضًا.

import datetime

now = datetime.datetime.now()

formatted = now.strftime("%d/%m/%Y - %H:%M:%S")

print(formatted)

قد تكون النتيجة:

09/06/2026 - 14:30:15

هذا الأسلوب مناسب عند عرض وقت إنشاء تقرير، أو وقت حفظ عملية، أو وقت تسجيل دخول المستخدم.

قاعدة عملية: استخدم strftime() عندما تريد تحويل التاريخ أو الوقت إلى شكل مناسب للعرض أمام المستخدم. {alertInfo}

تحويل النص إلى تاريخ باستخدام strptime

أحيانًا يكون لديك تاريخ مكتوب كنص، مثل تاريخ أدخله المستخدم:

date_text = "09/06/2026"

هذا النص لا يمكن حساب الفرق بينه وبين تاريخ آخر مباشرة. لذلك نستخدم strptime() لتحويله إلى تاريخ حقيقي.

import datetime

date_text = "09/06/2026"

real_date = datetime.datetime.strptime(date_text, "%d/%m/%Y")

print(real_date)

الناتج سيكون كائنًا من نوع datetime، وليس نصًا عاديًا.

معلومة مهمة: عند استخدام strptime() يجب أن يكون شكل النص مطابقًا تمامًا لشكل التنسيق الذي تكتبه، وإلا سيظهر خطأ. {alertWarning}

الفرق بين strftime و strptime

هناك تشابه في الاسم بين strftime و strptime، وهذا يسبب ارتباكًا للمبتدئين.

الدالة تعمل ماذا؟ مثال الاستخدام
strftime() تحول التاريخ إلى نص منسق. عرض التاريخ للمستخدم.
strptime() تحول النص إلى تاريخ. قراءة تاريخ أدخله المستخدم.

تذكرها بهذه الطريقة:

  • strftime: من تاريخ إلى نص.
  • strptime: من نص إلى تاريخ.

حساب الفرق بين تاريخين

شرح حساب الفرق بين تاريخين في Python باستخدام datetime و timedelta

واحدة من أهم استخدامات مكتبة datetime هي حساب الفرق بين تاريخين. مثل حساب عدد الأيام المتبقية على نهاية السنة، أو حساب مدة اشتراك، أو معرفة كم يومًا مضى على تاريخ معين.

import datetime

today = datetime.date.today()
end_date = datetime.date(2026, 12, 31)

difference = end_date - today

print("عدد الأيام المتبقية:", difference.days)

عندما تطرح تاريخًا من تاريخ آخر، تكون النتيجة من نوع timedelta، ويمكنك الوصول إلى عدد الأيام باستخدام .days.

استخدام timedelta لإضافة أيام أو طرحها

إذا أردت إضافة مدة زمنية إلى تاريخ، نستخدم timedelta.

import datetime

today = datetime.date.today()

after_week = today + datetime.timedelta(days=7)

print("بعد أسبوع:", after_week)

ولطرح أيام:

import datetime

today = datetime.date.today()

yesterday = today - datetime.timedelta(days=1)

print("أمس:", yesterday)

ويمكنك استخدام الساعات والدقائق أيضًا:

import datetime

now = datetime.datetime.now()

after_two_hours = now + datetime.timedelta(hours=2)

print("بعد ساعتين:", after_two_hours)
قاعدة مفيدة: استخدم timedelta عندما تريد التعامل مع مدة زمنية، مثل يوم، أسبوع، ساعة، أو دقيقة. {alertSuccess}

مثال عملي: حساب العمر بشكل تقريبي

يمكننا استخدام datetime لحساب العمر بطريقة بسيطة اعتمادًا على سنة الميلاد.

import datetime

birth_year = 2000
current_year = datetime.date.today().year

age = current_year - birth_year

print("عمرك التقريبي هو:", age)

هذا الحساب تقريبي لأنه يعتمد على السنة فقط، ولا يتحقق هل مر تاريخ الميلاد في هذه السنة أم لا.

مثال عملي: حساب العمر بدقة أفضل

لحساب العمر بدقة أفضل، نحتاج إلى مقارنة اليوم والشهر أيضًا.

import datetime

birth_date = datetime.date(2000, 5, 15)
today = datetime.date.today()

age = today.year - birth_date.year

if (today.month, today.day) < (birth_date.month, birth_date.day):
    age = age - 1

print("العمر:", age)

هذا المثال أكثر دقة لأنه يتحقق هل تاريخ الميلاد مر في السنة الحالية أم لا.

مثال عملي: حساب الأيام المتبقية على موعد

لنفترض أنك تريد معرفة كم يومًا متبقيًا على موعد تسليم مشروع.

import datetime

today = datetime.date.today()
deadline = datetime.date(2026, 7, 1)

remaining = deadline - today

if remaining.days > 0:
    print("الأيام المتبقية:", remaining.days)
elif remaining.days == 0:
    print("الموعد اليوم")
else:
    print("الموعد انتهى منذ", abs(remaining.days), "يوم")

هذا المثال مهم جدًا في برامج المهام، المواعيد، الاشتراكات، والتقارير.

مثال عملي: برنامج تاريخ التسليم

في هذا المثال سنبني برنامجًا يحسب تاريخ التسليم بعد عدد معين من الأيام.

import datetime

today = datetime.date.today()
delivery_days = 10

delivery_date = today + datetime.timedelta(days=delivery_days)

print("تاريخ الطلب:", today)
print("تاريخ التسليم المتوقع:", delivery_date)

هذا النوع من الأكواد يمكن استخدامه في متجر إلكتروني بسيط أو برنامج إدارة طلبات.

مثال عملي: تسجيل وقت تنفيذ عملية

أحيانًا تحتاج إلى تسجيل الوقت الذي حدثت فيه عملية معينة، مثل حفظ ملف أو تنفيذ أمر.

import datetime

log_time = datetime.datetime.now()
formatted_time = log_time.strftime("%Y-%m-%d %H:%M:%S")

print("تم تنفيذ العملية في:", formatted_time)

هذا الأسلوب شائع في ملفات السجل أو ما يسمى logs، حيث يتم تسجيل وقت حدوث كل عملية.

مثال عملي: اسم ملف يحتوي على التاريخ

في بعض المشاريع قد تحتاج إلى إنشاء ملف باسم يحتوي على تاريخ اليوم، مثل تقرير يومي.

import datetime

today = datetime.date.today()
file_name = today.strftime("report_%Y_%m_%d.txt")

print(file_name)

قد تكون النتيجة:

report_2026_06_09.txt

هذا مفيد جدًا عند إنشاء تقارير يومية، أو حفظ نسخ احتياطية، أو تنظيم ملفات حسب التاريخ.

مشروع صغير: برنامج حساب الأيام المتبقية

الآن سنبني برنامجًا بسيطًا يحسب عدد الأيام المتبقية على تاريخ معين. سنستخدم تاريخًا ثابتًا في المثال حتى يكون واضحًا للمبتدئ.

import datetime

today = datetime.date.today()
event_date = datetime.date(2026, 12, 31)

difference = event_date - today

if difference.days > 0:
    print("باقي على الموعد", difference.days, "يوم")
elif difference.days == 0:
    print("الموعد اليوم")
else:
    print("الموعد انتهى")

هذا المشروع يجمع بين:

  • الحصول على تاريخ اليوم.
  • إنشاء تاريخ محدد.
  • طرح تاريخ من تاريخ آخر.
  • استخدام الشرط if.
  • عرض رسالة مناسبة حسب النتيجة.

مشروع صغير: برنامج حساب تاريخ انتهاء الاشتراك

لنفترض أنك تريد برنامجًا يحسب تاريخ انتهاء اشتراك بعد 30 يومًا من تاريخ اليوم.

import datetime

start_date = datetime.date.today()
subscription_days = 30

end_date = start_date + datetime.timedelta(days=subscription_days)

print("تاريخ بداية الاشتراك:", start_date)
print("تاريخ نهاية الاشتراك:", end_date)

هذا المثال قريب من التطبيقات الواقعية مثل مواقع الاشتراكات، الدورات، الخدمات المدفوعة، وأنظمة العضويات.

أخطاء شائعة عند استخدام datetime

أخطاء شائعة عند استخدام datetime في Python مثل الخلط بين النص والتاريخ

1. نسيان كتابة datetime مرتين

عند استخدام:

import datetime

ثم تريد الوقت الحالي، يجب أن تكتب:

now = datetime.datetime.now()

وليس:

now = datetime.now()

إلا إذا كنت قد استخدمت:

from datetime import datetime

2. الخلط بين النص والتاريخ

هذا نص:

date_text = "2026-06-09"

أما هذا تاريخ حقيقي:

real_date = datetime.date(2026, 6, 9)

3. كتابة ترتيب التاريخ بشكل خاطئ

الترتيب الصحيح عند استخدام date هو:

datetime.date(year, month, day)

وليس:

datetime.date(day, month, year)

4. نسيان مطابقة تنسيق strptime

إذا كان النص بهذا الشكل:

"09/06/2026"

فيجب أن يكون التنسيق:

"%d/%m/%Y"

أما إذا كان النص بهذا الشكل:

"2026-06-09"

فيجب أن يكون التنسيق:

"%Y-%m-%d"
تنبيه مهم: أكثر أخطاء strptime() تحدث بسبب عدم تطابق شكل النص مع شكل التنسيق. راجع الرموز جيدًا قبل تشغيل الكود. {alertWarning}

أهم أوامر datetime للمبتدئين

الأمر وظيفته مثال
date.today() الحصول على تاريخ اليوم. datetime.date.today()
datetime.now() الحصول على التاريخ والوقت الحاليين. datetime.datetime.now()
date() إنشاء تاريخ محدد. datetime.date(2026, 6, 9)
time() إنشاء وقت محدد. datetime.time(9, 30, 0)
timedelta() إضافة أو طرح مدة زمنية. datetime.timedelta(days=7)
strftime() تحويل التاريخ إلى نص منسق. today.strftime("%d/%m/%Y")
strptime() تحويل النص إلى تاريخ. datetime.strptime(text, "%d/%m/%Y")

متى أستخدم datetime في مشاريعي؟

استخدم مكتبة datetime عندما تحتاج إلى أي عملية مرتبطة بالتاريخ أو الوقت. ومن أمثلة ذلك:

  • برنامج يحسب العمر.
  • برنامج يحسب الأيام المتبقية على موعد.
  • برنامج يسجل وقت تنفيذ العمليات.
  • برنامج ينشئ تقارير يومية.
  • برنامج يتعامل مع اشتراكات أو مواعيد انتهاء.
  • برنامج يحفظ ملفات بأسماء تحتوي على تاريخ اليوم.
  • برنامج يحسب الفرق بين تاريخين.
  • برنامج يعرض التاريخ للمستخدم بتنسيق واضح.

تمرين تطبيقي على datetime

حاول تنفيذ التمرين التالي بنفسك:

  1. أنشئ ملفًا باسم datetime_practice.py.
  2. استدع مكتبة datetime.
  3. اطبع تاريخ اليوم.
  4. اطبع التاريخ والوقت الحاليين.
  5. أنشئ تاريخًا لموعد بعد 30 يومًا.
  6. اطبع التاريخ الجديد.
  7. احسب عدد الأيام بين اليوم وهذا الموعد.
  8. اعرض التاريخ بالشكل day/month/year.

الحل المقترح:

import datetime

today = datetime.date.today()
now = datetime.datetime.now()

future_date = today + datetime.timedelta(days=30)
difference = future_date - today

formatted_today = today.strftime("%d/%m/%Y")

print("تاريخ اليوم:", today)
print("التاريخ والوقت الآن:", now)
print("بعد 30 يومًا:", future_date)
print("عدد الأيام:", difference.days)
print("تاريخ اليوم بشكل منسق:", formatted_today)

روابط داخلية مفيدة من بايثون العرب

لفهم هذا الدرس بشكل أفضل، يمكنك مراجعة هذه الدروس من موقع بايثون العرب:

مصادر خارجية رسمية للتوسع

بعد فهم الأساسيات، يمكنك الرجوع إلى التوثيق الرسمي للتوسع أكثر:

الخلاصة

مكتبة datetime من أهم مكتبات Python القياسية، لأنها تساعدك على التعامل مع التاريخ والوقت داخل البرامج بطريقة منظمة. باستخدامها يمكنك معرفة تاريخ اليوم، طباعة الوقت الحالي، إنشاء تاريخ محدد، حساب الفرق بين تاريخين، إضافة أيام أو ساعات، وتنسيق التاريخ بالشكل المناسب للمستخدم.

إذا كنت تتعلم Python لبناء مشاريع عملية، فلا تتجاوز هذه المكتبة. قد تبدو بسيطة في البداية، لكنها ستظهر معك كثيرًا في البرامج الحقيقية، خصوصًا عند التعامل مع التقارير، المواعيد، الاشتراكات، السجلات، الملفات اليومية، وأنظمة المتابعة.

الخلاصة العملية: استخدم date.today() لتاريخ اليوم، و datetime.now() للتاريخ والوقت الحاليين، و timedelta() لإضافة أو طرح مدة زمنية، و strftime() لتنسيق التاريخ قبل عرضه للمستخدم. {alertSuccess}

أسئلة شائعة مع إجاباتها

هل أحتاج إلى تثبيت مكتبة datetime؟

لا. مكتبة datetime من مكتبات Python القياسية، لذلك لا تحتاج إلى تثبيتها باستخدام pip. فقط استخدم import datetime.

ما فائدة مكتبة datetime في Python؟

تُستخدم مكتبة datetime للتعامل مع التاريخ والوقت، مثل معرفة تاريخ اليوم، حساب الفرق بين تاريخين، إضافة أيام، تنسيق التاريخ، وتحويل النصوص إلى تواريخ.

ما الفرق بين date و datetime؟

date يمثل التاريخ فقط مثل السنة والشهر واليوم، أما datetime فيمثل التاريخ والوقت معًا.

كيف أحصل على تاريخ اليوم في Python؟

استخدم:

import datetime

print(datetime.date.today())

كيف أحصل على الوقت الحالي في Python؟

استخدم:

import datetime

print(datetime.datetime.now())

كيف أضيف 7 أيام إلى تاريخ اليوم؟

استخدم timedelta بهذا الشكل:

import datetime

today = datetime.date.today()
after_week = today + datetime.timedelta(days=7)

print(after_week)

كيف أحول التاريخ إلى شكل يوم/شهر/سنة؟

استخدم strftime():

formatted_date = today.strftime("%d/%m/%Y")

ما الفرق بين strftime و strptime؟

strftime() تحول التاريخ إلى نص منسق، أما strptime() فتحول النص إلى تاريخ يمكن التعامل معه برمجيًا.

هل أستخدم datetime في المشاريع الصغيرة؟

نعم. حتى المشاريع الصغيرة قد تحتاج إلى التاريخ والوقت، مثل برنامج ملاحظات، برنامج مهام، برنامج حساب عمر، أو برنامج يحفظ ملفًا باسم يحتوي على تاريخ اليوم.

إرسال تعليق

أحدث أقدم