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

استخدم وحدة التقويم في Python يحتوي على فئة تقويم تسمح بإجراء حسابات لمهام مختلفة بناءً على التاريخ والشهر والسنة. علاوة على ذلك، تقويم نصي و تقويم HTML دروس في Python يتيح لك هذا تعديل التقويم واستخدامه حسب حاجتك. دعونا نرى ما يمكننا فعله به. Python التقويم.
ما هي وحدة التقويم في Python?
استخدم وحدة التقويم هو جزء من Python مكتبة قياسية، لذا فهي متاحة دون أي تثبيت. وهي تجمع عدة فئات ووظائف مساعدة تُنشئ التقاويم وتجيب على أسئلة شائعة حول التواريخ، مثل يوم الأسبوع الذي يقع فيه تاريخ معين أو عدد أيام الشهر.
توفر الوحدة خمسة أصناف رئيسية:
- التقويم السنوي هي فئة أساسية توفر البيانات التي تُبنى عليها التقاويم الأخرى.
- تقويم نصي يُنتج تقاويم نصية عادية لشهر أو لسنة كاملة.
- تقويم HTML يقوم بإنتاج التقاويم على شكل جداول HTML لصفحات الويب.
- LocaleTextCalendar هو تقويم نصي يستخدم أسماء اليوم والشهر لموقع جغرافي محدد.
- LocaleHTMLCalendar وهو المكافئ في لغة HTML الذي يحترم اللغة المختارة.
يبدأ الأسبوع التقويمي افتراضياً في Mondayوفقًا للاتفاقية الأوروبية، يمكنك تغيير اليوم الأول باستخدام ثابت مثل calendar.SUNDAY، كما هو موضح في الأمثلة أدناه.
كيفية طباعة تقويم نصي Python
الخطوة 1) قم بتشغيل الكود.
- 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 سيقوم بطباعة الناتج.
لنقم بتغيير القيمة بسرعة من يوم الأحد إلى يوم الخميس ونتحقق من الناتج.
كيفية طباعة تقويم HTML Python
الخطوة 2) يمكنك أيضًا طباعة التقويم بصيغة HTML. هذه الميزة مفيدة للمطورين الذين يرغبون في إجراء تغييرات على شكل التقويم ومظهره.
كيفية تكرار أيام الشهر
الخطوة 3) الحلقات على مدار أيام الشهر باستخدام c.itermonthdays (2025,4)؛ سيجلب العدد الإجمالي للأيام لذلك الشهر.
- عند تنفيذ الكود للحصول على إجمالي عدد الأيام لشهر معين، على سبيل المثال "أبريل"، ستحصل على 30 يومًا في الناتج، ولكنك سترى أيضًا بعض الأصفار بجانب هذه الأيام في البداية وأحيانًا في النهاية.
- تشير الأصفار في الناتج إلى أن يوم الأسبوع متداخلping الشهر، مما يعني أنه لا ينتمي إلى ذلك الشهر.
- تظهر هذه الأصفار في الناتج لأنك ذكرتَ يومًا (الخميس) في الكود. لذا، عند استدعاء الدالة "c.itermonthdays"، يبدأ عدّ الأيام من الخميس، وقد لا يبدأ يوم الخميس لديك في الأول من أبريل، بل قد يكون في الثامن والعشرين أو التاسع والعشرين من مارس. لذلك، يبدأ الكود عدّ الأيام من الثامن والعشرين من مارس، وأي أيام بعده حتى الأول من أبريل. تُحتسب هذه الأيام كأصفار، وستراها في الناتج. وينطبق الأمر نفسه على نهاية الشهر.
- لذا، باستثناء التواريخ من 1 إلى 30، تظهر جميع التواريخ من الشهر السابق وكذلك الشهر التالي في المخرجات على شكل أصفار.
كيفية استخراج أسماء الأشهر وأيام الأسبوع من النظام المحلي
الخطوة 4) يمكنك جلب البيانات من النظام المحلي، مثل الأشهر أو أيام الأسبوع.
- يُظهر الناتج هنا أننا قمنا بطباعة أسماء الأشهر من النظام المحلي. وبالمثل، يمكنك أيضًا جلب أسماء أيام الأسبوع، كما هو موضح أدناه.
- تعتمد النتائج على النظام المحلي. إذا كان نظامك المحلي مضبوطًا على بلد آخر، فستظهر النتائج وفقًا لإعدادات ذلك البلد. هنا لدينا شهور، لذا لن يكون هناك فرق، ولكن بالنسبة لأسبوع أو يوم، ستختلف النتائج بالتأكيد.
كيفية إيجاد يوم محدد طوال العام
الخطوة 5) يمكنك الحصول على قائمة بيوم محدد من أيام السنة بأكملها. على سبيل المثال، يوجد يوم تدقيق في الأول من كل عام. Monday أسبوع. لنفترض أنك تريد معرفة تاريخ أول Monday لكل شهر. يمكنك استخدام هذا الرمز.
- 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. تُعدّ عمليات التحقق من السنة الكبيسة مفيدة عند التحقق من صحة التواريخ، أو جدولة الأحداث المتكررة، أو حساب عدد الأيام بدقة بين سنتين.







