Python وحدة التقويم مع مثال

⚡ ملخص ذكي

وحدة التقويم في Python يُنشئ هذا البرنامج تقاويم نصية وتقاويم HTML باستخدام فئتي TextCalendar وHTMLCalendar. ويُجري حسابات التاريخ بناءً على اليوم والشهر والسنة، ويتيح لك تخصيص يوم بداية الأسبوع لأي شهر.

  • 🔘 نوعان من التقويم: تقوم فئتا TextCalendar و HTMLCalendar بإنتاج تقاويم نصية عادية وتقاويم جاهزة للويب لشهر أو سنة مختارة.
  • ☑️ أول يوم من أيام الأسبوع: تُغير الثوابت مثل calendar.SUNDAY وطريقة setfirstweekday() اليوم الذي يبدأ فيه كل أسبوع.
  • ✅ عدد الأيام المتكررة: تقوم الدالة itermonthdays() بالتكرار على مدار شهر كامل وتحديد فترات التداخل.ping الأيام من الأشهر المتجاورة كأصفار.
  • 🧪 وظائف مساعدة: تجيب وظائف مثل isleap() و weekday() و monthrange() على أسئلة التاريخ الشائعة دون الحاجة إلى أي مكتبة إضافية.
  • 🛠️ المكتبة القياسية: تأتي وحدة التقويم مع Pythonلذلك لا يحتاج إلى تثبيت قبل استيراده واستخدامه.
  • 🤖 سير عمل الذكاء الاصطناعي: تستخلص مسارات التعلم الآلي ميزات التقويم مثل علامات أيام الأسبوع والسنوات الكبيسة للتنبؤ بالسلاسل الزمنية.

Python وحدة التقويم

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

ما هي وحدة التقويم في Python?

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

توفر الوحدة خمسة أصناف رئيسية:

  • التقويم السنوي هي فئة أساسية توفر البيانات التي تُبنى عليها التقاويم الأخرى.
  • تقويم نصي يُنتج تقاويم نصية عادية لشهر أو لسنة كاملة.
  • تقويم HTML يقوم بإنتاج التقاويم على شكل جداول HTML لصفحات الويب.
  • LocaleTextCalendar هو تقويم نصي يستخدم أسماء اليوم والشهر لموقع جغرافي محدد.
  • LocaleHTMLCalendar وهو المكافئ في لغة HTML الذي يحترم اللغة المختارة.

يبدأ الأسبوع التقويمي افتراضياً في Mondayوفقًا للاتفاقية الأوروبية، يمكنك تغيير اليوم الأول باستخدام ثابت مثل calendar.SUNDAY، كما هو موضح في الأمثلة أدناه.

كيفية طباعة تقويم نصي Python

الخطوة 1) قم بتشغيل الكود.

اطبع تقويمًا نصيًا في Python

  • Code السطر رقم 1: نبدأ بـ "import calendar"، والذي سيستورد جميع فئات هذه الوحدة.
  • Code السطر رقم 3: c= calendar.TextCalendar(calendar.SUNDAY) يُخبر المُفسِّر بإنشاء تقويم نصي. ستكون بداية الشهر يوم الأحد. Pythonيمكنك تنسيق التقويم كما تشاء وتغيير اليوم الذي يبدأ به الشهر.
  • Code السطر رقم 4: str= c.formatmonth(2025,1) يقوم بإنشاء تقويم لسنة 2025، الشهر 1 - يناير.
  • Code السطر رقم 5: print str سيقوم بطباعة الناتج.

لنقم بتغيير القيمة بسرعة من يوم الأحد إلى يوم الخميس ونتحقق من الناتج.

غيّر أول يوم عمل من أيام الأسبوع Python تقويمنا

كيفية طباعة تقويم HTML Python

الخطوة 2) يمكنك أيضًا طباعة التقويم بصيغة HTML. هذه الميزة مفيدة للمطورين الذين يرغبون في إجراء تغييرات على شكل التقويم ومظهره.

اطبع تقويم HTML في Python

كيفية تكرار أيام الشهر

الخطوة 3) الحلقات على مدار أيام الشهر باستخدام c.itermonthdays (2025,4)؛ سيجلب العدد الإجمالي للأيام لذلك الشهر.

تكرار العملية على مدار أيام الشهر في Python

  • عند تنفيذ الكود للحصول على إجمالي عدد الأيام لشهر معين، على سبيل المثال "أبريل"، ستحصل على 30 يومًا في الناتج، ولكنك سترى أيضًا بعض الأصفار بجانب هذه الأيام في البداية وأحيانًا في النهاية.
  • تشير الأصفار في الناتج إلى أن يوم الأسبوع متداخلping الشهر، مما يعني أنه لا ينتمي إلى ذلك الشهر.
  • تظهر هذه الأصفار في الناتج لأنك ذكرتَ يومًا (الخميس) في الكود. لذا، عند استدعاء الدالة "c.itermonthdays"، يبدأ عدّ الأيام من الخميس، وقد لا يبدأ يوم الخميس لديك في الأول من أبريل، بل قد يكون في الثامن والعشرين أو التاسع والعشرين من مارس. لذلك، يبدأ الكود عدّ الأيام من الثامن والعشرين من مارس، وأي أيام بعده حتى الأول من أبريل. تُحتسب هذه الأيام كأصفار، وستراها في الناتج. وينطبق الأمر نفسه على نهاية الشهر.
  • لذا، باستثناء التواريخ من 1 إلى 30، تظهر جميع التواريخ من الشهر السابق وكذلك الشهر التالي في المخرجات على شكل أصفار.

كيفية استخراج أسماء الأشهر وأيام الأسبوع من النظام المحلي

الخطوة 4) يمكنك جلب البيانات من النظام المحلي، مثل الأشهر أو أيام الأسبوع.

استرجاع أسماء الأشهر من النظام المحلي في Python

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

استرجاع أسماء أيام الأسبوع من النظام المحلي في Python

كيفية إيجاد يوم محدد طوال العام

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

ابحث عن يوم محدد من أيام السنة بأكملها في Python

  • mycal = calendar.monthcalendar(2025, month) يقوم بإنشاء تقويم للشهر.
  • قم بتعيين المتغيرين week1 و week2 إلى الأسبوع الأول والثاني من التقويم.
  • تحقق مما إذا كان الأسبوع 1 يحتوي على Monday وحدد يوم التدقيق.
  • وإلا، فحدد يوم التدقيق على أنه اليوم الأول Monday في الأسبوع الثاني.
  • يظهر الإخراج تاريخ الأول Monday الذي يقع في ذلك الشهر.
  • يعتمد طول كائن Cal هذا على عدد أسابيع الشهر. في حالتنا، هو أسبوع واحد أو أسبوعين، كما هو الحال في الأول Monday غالباً ما يكون الأسبوع الأول هو الأسبوع الذي نختاره، ولكن إن لم يكن كذلك، فإننا نختار الأسبوع الثاني. دعونا نرى بالتفصيل لماذا نختار الأسبوع الثاني أيضاً.
  • هنا نستخدم ثابت التقويم Mondayيُعطيك كائن التقويم ثوابت تُمثل يوم الأحد، Monday، الثلاثاء، وهكذا. إذا كان اليوم الذي يمثله في الأسبوع الأول هو Monday إذا لم يكن الثابت يساوي صفرًا - تذكر أن الأصفار تعني أيامًا تنتمي إلى شهر آخر - فذلك Monday ينتمي إلى هذا الشهر، ويوم التدقيق يقع خلال الأسبوع الأول. إذا كانت قيمته صفرًا، فإن الأول Monday ليس في الأسبوع الأول من الشهر، لذا يجب أن يكون في الأسبوع الثاني.
  • في هذه الحالة، نضبط متغير يوم التدقيق على Monday يمثل الأسبوع الثاني. يعود يوم التدقيق مع أي يوم كان إما للأسبوع الأول أو الثاني.

اكتملت Python التقويم السنوي Code مثال

إليكم الكود الكامل.

Python 2 مثال

import calendar
# Create a plain text calendar
c = calendar.TextCalendar(calendar.THURSDAY)
str = c.formatmonth(2025, 1, 0, 0)
print str

# Create an HTML formatted calendar
hc = calendar.HTMLCalendar(calendar.THURSDAY)
str = hc.formatmonth(2025, 1)
print str
# loop over the days of a month
# zeroes indicate that the day of the week is in a next month or overlapping month
for i in c.itermonthdays(2025, 4):
    print i

    # The calendar can give info based on local such a names of days and months (full and abbreviated forms)
    for name in calendar.month_name:
        print name
    for day in calendar.day_name:
        print day
    # calculate days based on a rule: For instance an audit day on the second Monday of every month
    # Figure out what days that would be for each month, we can use the script as shown here
    for month in range(1, 13):
		# It retrieves a list of weeks that represent the month
        mycal = calendar.monthcalendar(2025, month)
		# The first MONDAY has to be within the first two weeks
        week1 = mycal[0]
        week2 = mycal[1]
        if week1[calendar.MONDAY] != 0:
            auditday = week1[calendar.MONDAY]
        else:
        # if the first MONDAY isn't in the first week, it must be in the second week
        	auditday = week2[calendar.MONDAY]
print "%10s %2d" % (calendar.month_name[month], auditday)

Python 3 مثال

import calendar
# Create a plain text calendar
c = calendar.TextCalendar(calendar.THURSDAY)
str = c.formatmonth(2025, 1, 0, 0)
print(str)

# Create an HTML formatted calendar
hc = calendar.HTMLCalendar(calendar.THURSDAY)
str = hc.formatmonth(2025, 1)
print(str)
# loop over the days of a month
# zeroes indicate that the day of the week is in a next month or overlapping month
for i in c.itermonthdays(2025, 4):
    print(i)

    # The calendar can give info based on local such a names of days and months (full and abbreviated forms)
    for name in calendar.month_name:
        print(name)
    for day in calendar.day_name:
        print(day)
    # calculate days based on a rule: For instance an audit day on the second Monday of every month
    # Figure out what days that would be for each month, we can use the script as shown here
    for month in range(1, 13):
		# It retrieves a list of weeks that represent the month
        mycal = calendar.monthcalendar(2025, month)
		# The first MONDAY has to be within the first two weeks
        week1 = mycal[0]
        week2 = mycal[1]
        if week1[calendar.MONDAY] != 0:
            auditday = week1[calendar.MONDAY]
        else:
        # if the first MONDAY isn't in the first week, it must be in the second week
        	auditday = week2[calendar.MONDAY]
print("%10s %2d" % (calendar.month_name[month], auditday))

وظائف مفيدة في Python وحدة التقويم

إلى جانب الشرح المذكور أعلاه، تأتي وحدة التقويم مزودة بالعديد من الوظائف المفيدة التي تعمل دون الحاجة إلى إنشاء مثيل للفئة:

  • calendar.calendar(year) يُعيد تقويمًا سنويًا كاملًا كسلسلة نصية متعددة الأسطر، بينما calendar.prcal(year) يطبعها مباشرة.
  • calendar.month(year, month) يُعيد هذا النص شهرًا واحدًا، و calendar.prmonth(year, month) يطبعها.
  • calendar.monthcalendar(year, month) تُرجع الدالة الشهر كقائمة من صفوف الأسابيع، حيث يكون كل يوم عددًا صحيحًا والأيام خارج الشهر تساوي 0.

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

كيفية التحقق من السنة الكبيسة في Python

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

  • التقويم.isleap(السنة) تُرجع القيمة True عندما تكون السنة سنة كبيسة، و False في غير ذلك.
  • calendar.leapdays(y1, y2) تُرجع عدد السنوات الكبيسة في النطاق من y1 حتى y2، ولكن ليس بما في ذلك.

على سبيل المثال، تُرجع الدالة calendar.isleap(2024) القيمة True، بينما تُرجع الدالة calendar.isleap(2025) القيمة False. تُعدّ عمليات التحقق من السنة الكبيسة مفيدة عند التحقق من صحة التواريخ، أو جدولة الأحداث المتكررة، أو حساب عدد الأيام بدقة بين سنتين.

الأسئلة الشائعة

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

استدعِ الدالة calendar.weekday(year, month, day). تُعيد هذه الدالة عددًا صحيحًا يبدأ من 0 (Monday) إلى 6 (الأحد). قم بإقرانه مع calendar.day_name لتحويل هذا الرقم إلى تسمية قابلة للقراءة مثل Monday أو يوم الجمعة.

استخدم الدالة calendar.monthrange(year, month). تُرجع هذه الدالة زوجًا مرتبًا، حيث يُمثل العنصر الثاني عدد الأيام، لذا فإن calendar.monthrange(2025, 2)[1] تُرجع 28. أما العنصر الأول فهو يوم الأسبوع في أول يوم من ذلك الشهر.

استخدم calendar.LocaleTextCalendar أو calendar.LocaleHTMLCalendar ومرر لغة مثل "fr_FR". سيتم بعد ذلك طباعة أسماء أيام الأسبوع والشهر بتلك اللغة، بشرط أن تكون اللغة مثبتة على نظام التشغيل.

أنشئ ترميز HTMLCalendar().formatmonth(2025, 1)، ثم افتح ملفًا في وضع الكتابة واستدعِ الدالة write() مع هذا النص. يتيح حفظ الملف بامتداد .html لأي متصفح عرض التقويم المُنسّق.

يبدأ الأسبوع افتراضياً في Mondayوفقًا للاتفاقية الأوروبية، استدعِ الدالة calendar.setfirstweekday(calendar.SUNDAY)، أو مرر قيمة ثابتة مثل calendar.SUNDAY إلى TextCalendar، لجعل الأسبوع يبدأ في يوم آخر.

تستخدم مسارات البيانات وظائف التقويم لاستخلاص خصائص مثل يوم الأسبوع، ورقم الأسبوع، وعلامات السنة الكبيسة من التواريخ الخام. تساعد هذه الخصائص التقويمية المُصممة نماذج التعلم الآلي على رصد الأنماط الأسبوعية والموسمية في التنبؤ بالسلاسل الزمنية.

نعم. يمكن لمساعدي الذكاء الاصطناعي GitHub Copilot والوكلاء كتابة مقتطفات من وحدات التقويم - طباعة الأشهر، أو التحقق من السنوات الكبيسة، أو إنشاء تقويم HTML - من تعليق قصير. Revاطلع على المخرجات، لأن فهرسة أيام الأسبوع وإعدادات اليوم الأول من السهل الخلط بينهما.

تلخيص هذه التدوينة بـ: