في عام 2026، لدى الولايات المتحدة 11 إجازة رسمية، والمملكة المتحدة 14، واليابان 18، وألمانيا 9، وإندونيسيا 17، ولا تشترك الدول الخمس في تاريخ عطلة سوى 1 يناير. كرر الطلب عبر رموز الدول، بطلب واحد لكل دولة وسنة، ثم اجمع الدول تحت كل تاريخ عطلة لمقارنة تقاويمها.
نفّذ ذلك باستخدام واجهة API
- احصل على مفتاح واضبط متغير البيئة احصل على مفتاح مجاني من صفحة التسجيل واحتفظ به في متغير بيئة باسم
NARWHAL_API_KEY. يقرأ البرنامج ذلك المتغير ويرسل المفتاح بصيغةAuthorization: Bearer YOUR_KEY، لذا استخدم البيئة التي ستشغّل فيها Python. - اختر الدول والسنة استخدم رموز الدول وفق ISO 3166 alpha-3 مع
GET /v1/calendars/holidays/{country}/{year}: يطلب المثالUSAوGBRوJPNوDEUوIDNلعام 2026. تحتاج كل دولة وسنة إلى طلب مستقل، لذا تُجري هذه المقارنة خمسة طلبات؛ واستخدم السنة نفسها لجميع الدول التي تريد مقارنتها. - اجمع الدول تحت كل تاريخ شغّل برنامج Python لطلب عطلات كل دولة وتجميع سجلات الاستجابة حسب
date، مع مجموعة من رموز الدول لكل تاريخ. يرتب البرنامج تلك التواريخ، ويطبع ما تشترك فيه ثلاث دول على الأقل، ثم يحسب التواريخ المميزة لكل دولة في المجموعة الكاملة، بما فيها التواريخ التي لا تظهر في مخرجات التواريخ المشتركة.import os from collections import defaultdict import requests HEADERS = {"Authorization": f"Bearer {os.environ['NARWHAL_API_KEY']}"} COUNTRIES = ["USA", "GBR", "JPN", "DEU", "IDN"] by_date = defaultdict(set) for country in COUNTRIES: r = requests.get(f"https://api.narwhalapi.com/v1/calendars/holidays/{country}/2026", params={"scope": "national_public"} if country == "IDN" else None, headers=HEADERS, timeout=10) r.raise_for_status() for h in r.json()["holidays"]: by_date[h["date"]].add(country) for day in sorted(by_date): if len(by_date[day]) >= 3: print(day, sorted(by_date[day])) print({c: sum(1 for d in by_date.values() if c in d) for c in COUNTRIES}) - اقرأ التواريخ المشتركة والإجمالي لكل دولة لعام 2026، تتضمن مخرجات التواريخ المشتركة 1 يناير و3 أبريل و25 مايو و25 ديسمبر، ويتضمن السطر الأخير إجمالي التواريخ المميزة لكل دولة. تستخدم هذه الإجماليات نطاق
federal_governmentللولايات المتحدة، ونطاقbankللمملكة المتحدة، ونطاقnational_publicلليابان وألمانيا؛ ويحدد طلب إندونيسياnational_publicصراحةً.
اقرأ قائمة الدول لتاريخ مشترك بصورة منفصلة عن اسم العطلة. تشترك ألمانيا والمملكة المتحدة والولايات المتحدة في تاريخ عطلة يوم 25 مايو 2026؛ وهي في الولايات المتحدة يوم الذكرى. يجمع البرنامج التواريخ، لذا لا يشترط التطابق أن تستخدم الدول اسم العطلة نفسه. وتظهر الجمعة العظيمة في 3 أبريل 2026 لألمانيا والمملكة المتحدة وإندونيسيا، لذا يستوفي ذلك التاريخ أيضًا الحد الأدنى لعدد الدول المشتركة. تتضمن قائمة دوله DEU وGBR وIDN.
نفّذ ذلك في جدول بيانات أو دون شيفرة
افتح صفحة تقويم العطلات (الإنجليزية) لكل دولة لمقارنة التواريخ دون برنامج. للمقارنة في جدول بيانات، الصق تواريخ كل دولة في عمود مستقل واحتفظ بإدخال واحد لكل تاريخ مميز داخل تلك الدولة. ضع التاريخ الذي تريد مقارنته في A2، وقوائم تواريخ الدول الأخرى في الأعمدة B:E.
=COUNTIF(B:E, A2)تحسب الصيغة الخلايا المطابقة في أعمدة الدول الأخرى. يمثّل التاريخ في A2 بالفعل الدولة التي تقع قائمتها في العمود A، لذا اقرأ نتيجة الصيغة بوصفها عدد المطابقات في مواضع أخرى من الورقة. أبقِ تواريخ كل دولة معًا عند لصقها، لتتمكن من إرجاع كل مطابقة إلى تقويمها. انسخ الصيغة بجانب التواريخ التي تريد مقارنتها في العمود A. اقرأ كل نتيجة مع التاريخ في الصف نفسه؛ فالصيغة تبحث في الأعمدة الأخرى عن التاريخ نفسه، لذا لا تحتاج قوائمها إلى تطابق مواضع الصفوف.
متى تستخدم كل خيار
| الحالة | الخيار الأنسب | السبب |
|---|---|---|
| مقارنة دولتين أو ثلاث مرة واحدة | صفحات التقويم | اقرأ تواريخ عطلات كل دولة مباشرةً |
| إنشاء تقويم للفريق أو معالجة الرواتب عبر المكاتب | البرنامج، يُشغّل مرة سنويًا لكل دولة | اجمع الدول تحت كل تاريخ واحسب التواريخ المميزة |
| تضمين بعض المناطق فقط | رشّح حسب subdivision_codes في الاستجابة | اختر التقسيمات الإدارية ذات الصلة بالمقارنة |
لماذا تتكرر صفوف المملكة المتحدة؟
تختلف العطلات المصرفية بين الأمم المكوّنة للمملكة المتحدة، لذا يظهر كل تاريخ مرة لكل مجموعة من التقسيمات الإدارية. في عام 2026، تتضمن استجابة المملكة المتحدة 28 صفًا قبل إزالة التكرار، لأن إنجلترا وويلز وأيرلندا الشمالية واسكتلندا لها صفوف منفصلة، بينما يتضمن التقويم المجمّع 14 تاريخًا مميزًا. اجمع التواريخ في مجموعة عندما تريد إجمالي التواريخ المميزة للدولة.
لإنشاء تقويم إقليمي، استخدم subdivision_codes في الاستجابة لاختيار السجلات المعنية قبل جمع التواريخ. بذلك يبقى اختيار المنطقة منفصلًا عن حساب التواريخ المميزة.
كيف أستبعد أيام الإجازة الجماعية؟
مرر scope=national_public لإندونيسيا لاستبعاد أيام الإجازة الجماعية، المعروفة باسم cuti bersama. لعام 2026، يتضمن هذا الاختيار 17 تاريخًا مميزًا للإجازات الرسمية، بينما تتضمن الاستجابة دون ترشيح 25 صفًا لأنها تشمل أيضًا سجلات collective_leave. يُضاف معامل scope إلى طلب إندونيسيا في هذه المقارنة.
طبّق النطاق قبل إضافة التواريخ إلى المجموعة المجمّعة. وإلا فستتضمن سجلات إندونيسيا الإجازات الجماعية عند مقارنة التواريخ المشتركة أو حساب عطلات الدولة.
هل تحسب الدول العطلات الواقعة في نهاية الأسبوع بالطريقة نفسها؟
لا، تستخدم قائمة كل دولة التاريخ الذي تحدده تلك الدولة. تنقل بعض الدول العطلة إلى أحد أيام الأسبوع وتضع لها علامة observed. استخدم التاريخ الوارد في الاستجابة للمقارنة، بما فيه التاريخ البديل حيث يظهر، بدلًا من نقل كل عطلة واقعة في نهاية الأسبوع وفق قاعدة واحدة لجميع الدول.
مثال تطبيقي: 25 ديسمبر 2026
ابدأ بتاريخ 25 ديسمبر 2026 وابحث عنه في قائمة العطلات المختارة لكل دولة. تضيف كل من ألمانيا والمملكة المتحدة وإندونيسيا والولايات المتحدة رمز دولة؛ ولا توجد عطلة في اليابان في ذلك التاريخ. احسب كل دولة مطابقة مرة واحدة، حتى عندما تتضمن استجابتها صفوفًا إقليمية منفصلة لذلك التاريخ.
| الدولة | الرمز | عطلة في 25 ديسمبر 2026 |
|---|---|---|
| ألمانيا | DEU | نعم |
| المملكة المتحدة | GBR | نعم |
| إندونيسيا | IDN | نعم |
| الولايات المتحدة | USA | نعم |
| اليابان | JPN | لا |
| الإجمالي | DEU, GBR, IDN, USA | 4 من 5 دول |
احسب رموز الدول المميزة لتاريخ 25 ديسمبر 2026 لتحصل على أربع من الدول الخمس. يستوفي التاريخ شرط الظهور في مخرجات البرنامج لأنه مشترك بين ثلاث دول على الأقل. وللمقارنة، يتضمن 1 يناير 2026 رموز الدول الخمس كلها، وهو التاريخ الوحيد المشترك بينها جميعًا خلال عام 2026.
نُشر في .
الخطوات التالية
- أدلة إرشاديةتحقق مما إذا كان تاريخ ما إجازة رسمية
- أدلة إرشاديةاحسب أيام العمل بين تاريخين
- أدلة إرشاديةأضف فحصًا للعطلات إلى شيفرتك
- مرجع APIاقرأ وثائق واجهة API للتقاويم
أنشئ مفتاحًا مجانيًا واستدعِ واجهة API من شيفرتك. احصل على مفتاح API مجاني
