احسب أيام العمل بين تاريخين

يوجد 22 يوم عمل بين 1 و31 ديسمبر 2026 في الولايات المتحدة، مع احتساب الطرفين: 23 يومًا من الاثنين إلى الجمعة ناقص يوم عيد الميلاد الموافق الجمعة 25 ديسمبر. احسب أيام الاثنين إلى الجمعة ضمن نطاقك، ثم اطرح الإجازات الرسمية التي تقع فيها.

نفّذ ذلك باستخدام واجهة API

لا توجد في Narwhal نقطة نهاية لأيام العمل. اقرأ الإجازات الرسمية لدولة وسنة باستخدام GET /v1/calendars/holidays/{country}/{year}، ثم احسب أيام الاثنين إلى الجمعة التي لا ترد تواريخها في تلك القائمة. يعني يوم العمل هنا أي يوم من الاثنين إلى الجمعة لا يكون إجازة رسمية في الدولة المختارة. يتطلب الحساب طلبًا واحدًا لكل دولة وسنة، بما في ذلك طلب منفصل لكل سنة ضمن نطاق يمتد عبر سنوات.

  1. احصل على مفتاح API الخاص بك احصل على مفتاح API مجاني واحفظه في متغير البيئة NARWHAL_API_KEY. يرسله البرنامج النصي في الترويسة Authorization: Bearer YOUR_KEY إلى https://api.narwhalapi.com.
  2. اختر الدولة ونطاق التواريخ استخدم رمز دولة وفق ISO 3166 alpha-3، مثل USA أو GBR أو JPN أو DEU أو IDN. يستخدم المثال USA ويحسب من 1 إلى 31 ديسمبر 2026، مع تضمين التاريخين.
  3. احسب أيام الاثنين إلى الجمعة غير الموجودة في مجموعة العطلات استخدم برنامج Python النصي هذا مع التواريخ التي تختارها. يجمع تواريخ العطلات لكل سنة ضمن النطاق في مجموعة، ثم يحسب فقط تواريخ الاثنين إلى الجمعة غير الموجودة فيها.
    Python، أيام العمل بين تاريخين
    import os
    from datetime import date, timedelta
    import requests
    
    API = "https://api.narwhalapi.com"
    HEADERS = {"Authorization": f"Bearer {os.environ['NARWHAL_API_KEY']}"}
    
    
    def holidays(country: str, year: int) -> set[str]:
        r = requests.get(
            f"{API}/v1/calendars/holidays/{country}/{year}", headers=HEADERS, timeout=10
        )
        r.raise_for_status()
        return {h["date"] for h in r.json()["holidays"]}
    
    
    def business_days(start: date, end: date, country: str = "USA") -> int:
        """Business days from start to end, counting both ends, like NETWORKDAYS."""
        off = set()
        for year in range(start.year, end.year + 1):
            off |= holidays(country, year)
        days = (start + timedelta(n) for n in range((end - start).days + 1))
        return sum(1 for d in days if d.weekday() < 5 and d.isoformat() not in off)
    
    
    print(business_days(date(2026, 12, 1), date(2026, 12, 31)))
  4. اقرأ نتيجة نطاقك للفترة من 1 إلى 31 ديسمبر 2026 في الولايات المتحدة، يطبع البرنامج النصي 22. تتاح السنوات المقبلة ما دامت تقاويمها منشورة؛ ويُعاد 404 calendar_not_published للتقويم غير المنشور.

يتضمن تقويم الحكومة الفيدرالية للولايات المتحدة لعام 2026 ما مجموعه 11 يومًا من أيام العطلات: 1 يناير و19 يناير و16 فبراير و25 مايو و19 يونيو و3 يوليو و7 سبتمبر و12 أكتوبر و11 نوفمبر و26 نوفمبر و25 ديسمبر. لنطاق يقتصر على ديسمبر 2026، يكون يوم عيد الميلاد هو التاريخ الذي يقع ضمن النطاق من هذه القائمة السنوية.

نفّذ ذلك في جدول بيانات أو دون شيفرة

في Excel أو Google Sheets، ضع تواريخ العطلات في عمود واستخدمه بوصفه النطاق Holidays. انسخ التواريخ من صفحة الدولة في تقاويم العطلات في Narwhal (الإنجليزية)، أو خذها من استجابة واجهة API. تحسب الصيغة أيام الاثنين إلى الجمعة بين التاريخين وتستبعد التواريخ الموجودة في عمود العطلات. يُضمَّن طرفا النطاق.

Excel أو Google Sheets
=NETWORKDAYS(DATE(2026,12,1), DATE(2026,12,31), Holidays)

لديسمبر 2026 في الولايات المتحدة، يعطي النطاق Holidays المكوَّن من خلية واحدة تحتوي على 2026-12-25 النتيجة 22. دون نطاق العطلات، تعطي الصيغة 23، لأنها تحسب أيام الاثنين إلى الجمعة دون طرح يوم عيد الميلاد. أبقِ عمود العطلات مرتبطًا بالدولة والسنة اللتين تحسب لهما. يتطلب النطاق الممتد عبر سنوات تواريخ العطلات لكل سنة.

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

متى تستخدم كل خيار

الحالةالخيار الأنسبالسبب
حساب لمرة واحدة لعدد قليل من التواريخNETWORKDAYS في جدول بيانات مع عمود للعطلاتتشمل الصيغة الطرفين وتطرح تواريخ العطلات المقدَّمة
أزواج كثيرة من التواريخ أو مهمة ليليةبرنامج Python نصي مع جلب العطلات مرة واحدة لكل دولة وسنةأعِد استخدام مجموعة العطلات لأزواج التواريخ في الدولة والسنة نفسيهما
أيام عمل إقليمية أو خاصة بالمصارفاستخدم scope وsubdivision_codes، أو قائمة عطلاتك الخاصةيجب أن تطابق قائمة العطلات التقويم الذي تحتاج إليه

هل يشمل الحساب تاريخَي البداية والنهاية؟

نعم. يشمل برنامج Python النصي وNETWORKDAYS تاريخَي البداية والنهاية. يجب أن يستوفي كل تاريخ عند طرفَي النطاق شروط يوم العمل: فالسبت أو الأحد أو الإجازة الرسمية لا يضيف شيئًا إلى الإجمالي. يصف تضمين الطرفين النطاق؛ وتحدد قواعد أيام الأسبوع والعطلات التواريخ التي تُحتسب.

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

ما الذي يتغير عندما تقع عطلة في نهاية الأسبوع؟

استخدم التاريخ البديل إذا كانت الدولة تعتمد تاريخًا بديلًا للعطلة. تضع واجهة API العلامة observed: true على اليوم البديل. في تقويم الولايات المتحدة لعام 2026، يُدرج عيد الاستقلال يوم الجمعة 3 يوليو لأن 4 يوليو يوافق يوم السبت.

للفترة من 1 إلى 31 يوليو 2026، استبعد الجمعة 3 يوليو من حساب أيام الاثنين إلى الجمعة. السبت 4 يوليو خارج هذا الحساب أصلًا، لذا لا يحتاج إلى طرح إضافي. استخدم التاريخ الذي يقدمه التقويم للعطلة البديلة.

ماذا لو اختلفت عطلات نهاية الأسبوع أو العطلات الإقليمية؟

استخدم نمط عطلة نهاية الأسبوع ونطاق العطلات المطابقين لتقويمك. يفترض برنامج Python النصي أن السبت والأحد هما عطلة نهاية الأسبوع. لعطلة نهاية أسبوع يومَي الجمعة والسبت في جدول بيانات، استخدم NETWORKDAYS.INTL(start, end, 7, Holidays).

تتضمن سجلات العطلات date وname وscope وsubdivision_codes، وأحيانًا local_name. استخدم حقلَي النطاق والتقسيمات الإدارية للتقاويم الإقليمية، ثم أزل التكرارات حسب التاريخ. لعام 2026، يتضمن GBR سجلات منفصلة لإنجلترا وويلز وأيرلندا الشمالية واسكتلندا: 28 صفًا تحتوي على 14 تاريخًا مختلفًا.

قد تختلف تقاويم المصارف والبورصات والشركات عن تقاويم الإجازات الرسمية. نطاق قائمة الولايات المتحدة هو federal_government؛ وتُغلق بورصة NYSE يوم الجمعة العظيمة، 3 أبريل 2026، وهو غير موجود في تلك القائمة الفيدرالية. استخدم قائمتك الخاصة عندما يختلف التقويم المطلوب.

مثال تطبيقي: من 1 إلى 31 ديسمبر 2026، الولايات المتحدة

يتكون ديسمبر 2026 من 31 يومًا ويبدأ يوم الثلاثاء 1 ديسمبر. احسب طرفَي الشهر لتحصل على 23 يومًا من الاثنين إلى الجمعة. يوافق يوم عيد الميلاد الجمعة 25 ديسمبر 2026، لذا اطرح هذه العطلة التي تقع ضمن تلك الأيام.

النطاق في الولايات المتحدةأيام الاثنين إلى الجمعةالعطلات من الاثنين إلى الجمعةأيام العمل
من 1 إلى 31 ديسمبر 2026231، يوم عيد الميلاد في 25 ديسمبر23 - 1 = 22
من 20 نوفمبر إلى 4 ديسمبر 2026111، عيد الشكر في 26 نوفمبر11 - 1 = 10

للنطاق الثاني، ضمّن 20 نوفمبر و4 ديسمبر 2026. أيام الاثنين إلى الجمعة فيه هي 20 و23 و24 و25 و26 و27 و30 نوفمبر، ثم 1 و2 و3 و4 ديسمبر. بذلك يكون عددها 11 يومًا. يوافق عيد الشكر الخميس 26 نوفمبر 2026؛ اطرحه لتحصل على 10 أيام عمل.

نُشر في .

الخطوات التالية