تحديد يوم الأسبوع

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

## المفاهيم
في الحساب العددي تمثل أيام الأسبوع بأرقام أيام الأسبوع. إذا كان يوم الاثنين هو اليوم الأول من الأسبوع فمن الممكن ترميز الأيام من 1 إلى 7، وذلك من الاثنين إلى الأحد كما هو متبع في آيزو 8601. كما يمكن أيضًا حساب اليوم المحدد بالرقم 7 على أنه *0*، وذلك بتطبيق المعامل الحسابي 7 الذي يحسب الباقي من الرقم بعد القسمة على 7. ويكون التعامل مع الرقم 7 على أنه 0، والرقم 8 على أنه 1، والرقم 9 على أنه 2، والرقم 18 على أنه 4 وهكذا. فإذا احتُسب يوم الأحد باعتباره اليوم الأول فبعد 7 أيام ( *أي*اليوم الثامن هو أيضًا يوم أحد واليوم الثامن عشر هو نفس اليوم الرابع وهو يوم أربعاء لأنه يقع بعد يوم الأحد بثلاثة أيام ( *أي إنه* ). 

النهج الأساسي لجميع الطرق تقريبًا لحساب يوم الأسبوع يبدأ بالبدء من "تاريخ ثابت": زوج معروف (مثل 1 يناير 1800 باعتباره يوم أربعاء)، وتحديد عدد الأيام بين اليوم المعروف واليوم الذي تحاول تحديده واستخدام عامل القسمة مع باقي لحساب 7 للعثور على يوم عددي جديد في الأسبوع.

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

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

### الأيام المقابلة
كل يوم سابع في الشهر له نفس اسم اليوم السابق:

### الأشهر المقابلة
"الأشهر المقابلة" هي تلك الأشهر ضمن السنة التقويمية التي تبدأ في نفس اليوم من الأسبوع. على سبيل المثال يتوافق شهري سبتمبر وديسمبر؛ لأن الأول من سبتمبر يقع في نفس اليوم مثل الأول من ديسمبر (حيث يوجد بالضبط ثلاثة عشر أسبوعًا من 7 أيام بين التاريخين). ويمكن أن تتوافق الأشهر فقط إذا كان عدد الأيام بين أيامها الأولى قابلاً للقسمة على 7، أو بمعنى آخر إذا كانت أيامها الأولى تفصلها عدد صحيح من الأسابيع. على سبيل المثال شهر فبراير من السنة العادية يتوافق مع شهر مارس لأن شهر فبراير يحتوي على 28 يومًا، وهو رقم قابل للقسمة على 7 حيث أن 28 يومًا تعادل أربعة أسابيع بالضبط. في السنة الكبيسة يتوافق شهري يناير وفبراير مع أشهر مختلفة عن السنة العادية، حيث أن إضافة 29 فبراير يعني أن كل شهر لاحق يبدأ بعد يوم واحد.

يتوافق شهر يناير مع شهر أكتوبر في السنوات العادية وشهري أبريل ويوليو في السنوات الكبيسة. كما يتوافق شهر فبراير مع شهري مارس ونوفمبر في السنوات العادية وأغسطس في السنوات الكبيسة. وشهر مارس يتوافق دائمًا مع شهر نوفمبر، وشهر أبريل يتوافق دائمًا مع شهر يوليو، وشهر سبتمبر يتوافق دائمًا مع شهر ديسمبر. حيث أن شهر أغسطس لا يتوافق مع أي شهر آخر في السنة العادية. وشهر أكتوبر لا يتوافق مع أي شهر آخر في السنة الكبيسة. شهر مايو ويونيو لا يتوافقان مع أي شهر آخر.

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

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

عام 2021 هو عام عادي يبدأ يوم الجمعة مما يعني أنه يتوافق مع العام التقويمي 2010. ويتوافق الشهرين الأولين من عام 2021 مع الشهرين الأولين من عام 2016. كذلك عام 2022 هو عام عادي يبدأ يوم السبت، مما يعني أنه يتوافق مع العام التقويمي 2011. والأشهر العشرة الأخيرة من عام 2022 تتوافق مع الأشهر العشرة الأخيرة من عام 2016. وعام 2023 هو عام عادي يبدأ يوم الأحد، مما يعني أنه يتوافق مع العام التقويمي 2017. 2024 هي سنة كبيسة تبدأ يوم الاثنين، مما يعني أنها تتوافق مع السنة التقويمية 1996. والشهرين الأولين من عام 2024 يتوافقان مع الشهرين الأولين من عام 2018. الأشهر العشرة الأخيرة من عام 2024 تتوافق مع الأشهر العشرة الأخيرة من عام 2019.

كل سنة كبيسة تتكرر مرة كل 28 سنة، وكل سنة عادية تتكرر مرة كل 6 سنوات ومرتين كل 11 سنة. على سبيل المثال كان آخر ظهور للسنة الكبيسة التي بدأت يوم الأربعاء هو عام 2020، وسيكون الظهور القادم في عام 2048. وبالمثل فإن السنوات المشتركة القادمة التي تبدأ يوم الجمعة ستكون 2027 و2038 ثم 2049. كلا العبارتين صحيحتان ما لم تتخطى سنة كبيسة، ولكن هذا لن يحدث حتى عام 2100.

للتفاصيل انظر الجدول أدناه.

ملحوظات:

* اللون الأسود يعني جميع أشهر السنة المشتركة
* اللون الأحمر يعني الشهرين الأولين من السنة الكبيسة
* اللون الأزرق يعني آخر 10 أشهر من السنة الكبيسة

### القرون المقابلة

"السنة 000" هي -في التسلسل الزمني العادي- السنة 1 قبل الميلاد (التي تسبق السنة 1 بعد الميلاد). وفي الترقيم الفلكي للسنوات يأتي العام 0 بين 1 قبل الميلاد و1 بعد الميلاد. أما في التقويم اليولياني المسبق (أي التقويم اليولياني كما كان ليكون لو شغل بدرجة صحيحة منذ البداية) فيبدأ عام 1 قبل الميلاد يوم الخميس. وفي التقويم الغريغوري المبكر (سمي بهذا الاسم لأنه لم يكن مبتكراً حتى عام 1582) يبدأ العام 1 قبل الميلاد يوم السبت.

## طرق جدولية لحساب يوم الاسبوع

### الجدول الكامل: التقويمات الجوليانية والغريغورية
بالنسبة للتواريخ الجوليانية قبل عام 1300 وبعد عام 1999 يجب استخدام السنة الموجودة في الجدول والتي تختلف بمضاعف دقيق يبلغ 700 عام. وبالنسبة للتواريخ الميلادية بعد عام 2299 فيجب استخدام السنة الموجودة في الجدول والتي تختلف بمضاعف دقيق يبلغ 400 عام. كما تشير القيم "  " إلى "  " إلى الباقي عند قسمة قيمة المئات على 7 و4 على التوالي، مما يشير إلى كيفية امتداد السلسلة في أي اتجاه. وتُعرض القيم الجوليانية والغريغورية من عام 1500 إلى عام 1999 للراحة. وتشير الأرقام المكتوبة بخط غامق (على سبيل المثال **04** ) إلى السنة الكبيسة. فإذا انتهت السنة بالرقم 00 وكانت المئات فيها مكتوبة بالخط العريض فهي سنة كبيسة. وهكذا يشير الرقم 19 إلى أن عام 1900 ليس سنة كبيسة غريغورية (ولكن **الرقم 19** في العمود اليولياني يشير إلى *أنها* سنة كبيسة جوليانية، كما هي الحال مع جميع السنوات اليوليانية *x* 00). حيث يشير **الرقم 20** إلى أن عام 2000 هي سنة كبيسة. استخدم **Jan** و **Feb** فقط في السنوات الكبيسة.

لتحديد يوم الأسبوع (السبت 1 يناير 2000)

* يوم الشهر: 1 ~ 31 (1)
* الشهر: (6)
* السنة: (0)
* القرن الرابع للتقويم الميلادي والقرن السابع للتقويم اليولياني (0) .
* إضافة 1+6+0+0=7. بقسمة العدد على 7 يبقى 0، وبذلك فإن يوم الأسبوع هو السبت.

الصيغة هي w = (d + m + y + c) mod 7.

### التقويم اليولياني المنقح
لاحظ أن التاريخ (أي يوم الأسبوع) في التقويمين اليولياني والغريغوري المنقحين هو نفسه من 14 أكتوبر 1923 إلى 28 فبراير 2800 م ضمنًا، وأنه بالنسبة للسنوات الكبيرة قد يكون من الممكن طرح 6300 أو مضاعفاته قبل البدء للوصول إلى سنة تقع ضمن الجدول أو أقرب إليه.

للبحث عن يوم الأسبوع لأي تاريخ لأي عام باستخدام الجدول، اطرح 100 من السنة ثم قسّم الفرق على 100 واضرب الحاصل الناتج (مع حذف الكسور) في سبعة ثم قسّم الناتج على تسعة. لاحظ الحاصل (حذف الكسور). أدخل الجدول بالسنة اليوليانية وقبل القسمة النهائية أضف 50 واطرح الحاصل المذكور أعلاه.

مثال: ما هو يوم الأسبوع 27 يناير 8315؟

8315−6300=2015، 2015−100=1915، 1915/100=19 الباقي 15، 19×7=133، 133/9=14 الباقي 7. إن عام 2015 متقدم عن عام 1315 بـ 700 سنة، لذا تستخدم 1315. من الجدول : للمئات (13): 6. للأرقام المتبقية (15): 4. للشهر (يناير): 0. للتاريخ (27): 27.  . 73/7=10 الباقي 3. يوم الأسبوع = الثلاثاء.

### حرف الدومينيكال
للعثور على الحرف الدومينيكي احسب يوم الأسبوع إما 1 يناير أو 1 أكتوبر. إذا كان يوم الأحد فإن الحرف الدومينيكي هو A، وإذا كان يوم السبت B، وبالمثل إلى الوراء عبر الأسبوع وإلى الأمام عبر الأبجدية إلى يوم الاثنين وهو G.

السنوات الكبيسة لها حرفان الأحد لذلك بالنسبة لشهري يناير وفبراير احسب يوم الأسبوع في الأول من يناير، وبالنسبة لشهري مارس إلى ديسمبر احسب يوم الأسبوع في الأول من أكتوبر.

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

**في التقويم الغريغوري**: كل السنوات التي تقسم بالضبط على 100 (بخلاف تلك التي تقسم بالضبط على 400).

**في التقويم اليولياني المنقح**: كل السنوات التي تقسم بالضبط على 100 (بخلاف تلك التي تعطي الباقي 200 أو 600 عند القسمة على 900).

### "يوم القيامة"
هذه قطعة أثرية من الرياضيات الترفيهية. انظر قاعدة يوم القيامة للحصول على توضيح.

### التحقق من النتيجة
استخدم هذا الجدول للعثور على يوم الأسبوع دون أي حسابات.

**أمثلة:**

* للطريقة الشائعة

*26 ديسمبر 1893 (جي.دي.)*

ديسمبر يقع في الصف F و26 في العمود E لذا فإن حرف التاريخ هو C الموجود في الصف F والعمود E. 93 (السنة عامل قسمة 100) يقع في الصف D (صف السنة) والحرف C في صف السنة يقع في العمود G. 18 ([السنة/100] في عمود القرن الغريغوري) يقع في الصف C (صف القرن) والحرف في صف القرن والعمود G هو B لذا فإن يوم الأسبوع هو الثلاثاء.

*13 أكتوبر 1307 (جيه.دي)*

13 أكتوبر هو يوم F. الحرف F في صف السنة (07) يقع في العمود G. والحرف في صف القرن (13) والعمود G هو E، لذا فإن يوم الأسبوع هو الجمعة.

*1 يناير 2000 (جي.دي)*

يتوافق 1 يناير مع G ويتوافق G في صف السنة ( 0 0) مع F في صف القرن ( 20 ) ويتوافق F مع يوم السبت.

صيغة موجزة للطريقة: *"حرف التاريخ (G) الحرف (G) في صف السنة ( <span style="color:red;">0</span> 0) والحرف (F) في صف القرن ( <span style="color:red;">20</span> )، وبالنسبة لليوم يصبح الحرف (F) يوم عمل (السبت)"*.

**طريقة حرف الأحد**

بتخصيص حرف لكل يوم من أيام السنة (باستثناء 29 فبراير) في التسلسل المتكرر ABCDEFG. وتبدأ السلسلة بـ A في 1 يناير وتستمر إلى A مرة أخرى في 31 ديسمبر. حرف الأحد هو الحرف الذي يقف أمام كل أيام الأحد في السنة. نظرًا لأن يوم 29 فبراير ليس له حرف فهذا يعني أن حرف الأحد من مارس إلى ديسمبر تتراجع خطوة واحدة في التسلسل مقارنة بحرف يناير وفبراير. كما يجب العثور على الحرف الخاص بأي تاريخ حيث يلتقي الصف الذي يحتوي على الشهر (باللون الأسود) على يسار "المربع اللاتيني" مع العمود الذي يحتوي على التاريخ أعلى "المربع اللاتيني". ولنا العثور على حرف الأحد حيث يلتقي العمود الذي يحتوي على القرن (أسفل "المربع اللاتيني") مع الصف الذي يحتوي على آخر رقمين من السنة على يمين "المربع اللاتيني". وبالنسبة للسنة الكبيسة فإن حرف الأحد الموجود بهذه الطريقة هو الحرف الذي ينطبق على الفترة من مارس إلى ديسمبر.

على سبيل المثال للعثور على يوم الأسبوع 16 يونيو 2020:

العمود "20" يلتقي الصف "20" في "D". الصف "يونيو" يلتقي العمود "16" في "F". بما أن الحرف F هو حرفين بعد الحرف D، فإن يوم الأسبوع هو يومين بعد الأحد أي يوم الثلاثاء.

## الخوارزميات الرياضية

### ريت داي
تعمل طريقة ريت داي عن طريق جمع عدد الأيام **' التي مرت منذ تاريخ يوم معروف من أيام الأسبوع **' ثم يحدد يوم الأسبوع بواسطة  ، بما يتوافق مع أي اتفاقية يمكن استخدامها لترميز **'.

على سبيل المثال تاريخ 13 أغسطس 2009 هو 733632 يومًا من 1 يناير 1م. إن أخذ الرقم لعامل القسمة 7 يعطينا 4 ومن ثم يوم الخميس.

=== خوارزمية جاوس ===
وصف [[كارل فريدريش غاوس|كارل فريدريش جاوس]] طريقة لحساب يوم الأسبوع في الأول من يناير في أي عام معين في مذكرة مكتوبة بخط اليد في مجموعة من الجداول الفلكية. لكن لم يقم بنشره أبدًا. وقد قاموا بتضمينه أخيرًا في أعماله المجمعة في عام 1927. وبالمقارنة مع ريت داي تساعد النتيجة على تبسيط حساب السنوات.

كانت طريقة جاوس قابلة للتطبيق على التقويم الغريغوري. فقد قام بترقيم أيام الأسبوع من 0 إلى 6 بدءًا من يوم الأحد. وقد حدد العملية التالية:

; المدخلات
: رقم السنة **'، رقم الشهر **'، رقم التاريخ **'.
:
; الناتج
: يوم من السنة.
; إجراء
:# أولاً قم بتحديد يوم الأسبوع  من 1 يناير.
:#* بالنسبة للتقويم الغريغوري، يوم الأسبوع هو
 بدلاً من ذلك، اضبط  ،  ، والقيمة هي

:#* بالنسبة للتقويم اليولياني، يوم الأسبوع هو
 أو
 .
:# قم الآن بتحديد الإزاحة المرتبطة بالشهر **' باستخدام جدول البحث مع **'.
:# العودة .

: يمكن تلخيص الإجراء المذكور أعلاه في تعبير واحد للحالة الغريغورية:

### '''مثال عملي'''
بالنسبة للسنة رقم 2000،  ،  و ، فإن يوم الأسبوع 1 يناير هو

: 
: 
: 

: 
: 
: 

أيام الأسبوع ليوم 30 أبريل 1777 و23 فبراير 1855 هي

: 
: 
: 

و

: 
: 
: 

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

يوضح جدول إزاحات الأشهر تباعدًا في شهر فبراير بسبب السنة الكبيسة. وهناك تقنية شائعة (استخدمها زيلر لاحقًا) وهي تحويل الشهر ليبدأ بشهر مارس، بحيث يكون يوم الكبيسة في نهاية العد. وبالإضافة إلى ذلك -وكما أظهر زيلر لاحقًا- يمكن استبدال الجدول بتعبير حسابي.

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

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

: w = \left(d + \lfloor 2.6m - 0.2 \rfloor + y + \left\lfloor\frac{y}{4}\right\rfloor + \left\lfloor\frac{c}{4}\right\rfloor - 2c\right) \bmod 7,

أين

* **' هو يوم الشهر (1 to 31)
* **' هو الشهر المتغير (مارس = 1,...,فبراير = 12)
* **' هي السنة إلا إذا كان **' هو 11 = يناير or 12 = فبراير والتي تعتبر جزءا من العام السابق، مُعطى 
* **' هو القرن الذي تقدمه <math>c = \lfloor Y/100 \rfloor</math>
* **' هي السنة بالنسبة للقرن، مُعطى بواسطة y = Y - 100c, أو ببساطة آخر رقمين من**'
* **' هو يوم من أيام الأسبوع (0 = أحد,...,6 = سبت)

### خوارزمية زيلر
ترقم الأشهر من 3 لشهر مارس إلى 14 لشهر فبراير في خوارزمية زيلر. ومن المفترض أن تبدأ السنة في شهر مارس؛ وهذا يعني على سبيل المثال أن شهر يناير 1995 يجب أن يُعامل باعتباره الشهر الثالث عشر من عام 1994. صيغة التقويم الغريغوري هي

w \equiv \left(\left\lfloor \frac{13(m+1)}{5}\right\rfloor+\left\lfloor \frac{y}{4}\right\rfloor+\left\lfloor\frac{c}{4}\right\rfloor + d+y-2c\right) \bmod 7  أين

* d هو يوم الشهر (1 إلى 31)
* m هو الشهر المحول (مارس = 3، ...يناير = 13، فبراير = 14)
* Y هل السنة ما لم m 13 = يناير أو 14 = فبراير والتي تعتبر جزءًا من العام السابق  Y = \textit{year} -1
* c هو القرن الذي أعطاه c = \lfloor Y/100 \rfloor
* y هي السنة بالنسبة للقرن، والتي يكون إعطاؤها بواسطة y = Y - 100c ، أو ببساطة آخر رقمين من Y
* w هو يوم الأسبوع (1 = الأحد،..0 = السبت)

الفرق الوحيد هو بين خوارزمية زيلر ( **' ) وخوارزمية غاوس المتباينة ( **' )، أي  .

:  (d + \lfloor(m + 1)2.6\rfloor + y +\lfloor y/4\rfloor + \lfloor c/4\rfloor - 2c) \bmod 7 - (d + \lfloor 2.6m - 0.2\rfloor + y +\lfloor y/4\rfloor + \lfloor c/4\rfloor - 2c) \bmod 7
:  = (\lfloor(m + 2 + 1)2.6 - (2.6m - 0.2)\rfloor) \bmod 7  (مارس = 3 في **' ولكن مارس = 1 في **' )
:  = (\lfloor 2.6m + 7.8 - 2.6m + 0.2\rfloor) \bmod 7
:  = 8 \bmod 7 = 1

### خوارزمية وانج
خوارزمية وانج لحساب التقويم الغريغوري بواسطة الإنسان هي (يجب طرح الصيغة بمقدار 1 إذا كان m يساوي 1 أو 2 إذا كانت السنة سنة كبيسة) w = \left(d - d_0(m) + y_0 - y_1 + \left\lfloor y_0/4-y_1/2\right\rfloor - 2\left(c\bmod 4 \right)\right) \bmod 7, أين

*  هو الرقم الأخير من السنة (الواحدات)
*  هو الرقم الثاني والأخير من السنة (العشرات)
*  هو القرن المعطى بـ c = \lfloor \textit{year}/100 \rfloor
*  هو يوم الشهر (1 إلى 31)
*  هو الشهر (يناير=1,...,ديسمبر=12)
*  هو يوم من أيام الأسبوع (0=الأحد,...,6=السبت)
*  هي دالة الأيام الخالية (إزاحة الشهر) بالقيم المدرجة في الجدول التالي

يمكن استخلاص خوارزمية للتقويم اليولياني من الخوارزمية أعلاه  w = \left(d - d_0(m) + y_0 - y_1 + \left\lfloor y_0/4-y_1/2\right\rfloor - c\right) \bmod 7,  يوم القيامة.

## خوارزميات أخرى

### طريقة شفيردتفيجر
في الطريقة الجدولية جزئيًا التي وضعها شفيردتفيجر تقسم السنة إلى القرن والسنة المكونة من رقمين داخل القرن. والنهج يعتمد على الشهر. بالنسبة إلى ،

 c = \left\lfloor\frac{y}{100}\right\rfloor \quad \text{and} \quad g = y - 100 c,
لذلك فإن  تقع بين 0 و99. بالنسبة إلى 

 c = \left\lfloor\frac{y-1}{100}\right\rfloor \quad \text{and} \quad g = y - 1 - 100 c.
صيغة يوم الأسبوع هي
 w = \left( d + e + f + g + \left\lfloor\frac{g}{4}\right\rfloor \right) \bmod 7,

حيث لنا اختيار معامل التناسب الإيجابي.

ولنا الحصول على قيمة **' من الجدول التالي:

ثم الحصول على قيمة **' من الجدول التالي والذي يعتمد على التقويم. وبالنسبة للتقويم الغريغوري

بالنسبة للتقويم اليولياني

### طريقة لويس كارول
قام تشارلز لوتويدج دودجسون ( لويس كارول ) بوضع طريقة تشبه اللغز ولكنها جدولية جزئيًا في استخدام نفس أرقام الفهرس للأشهر كما في "الجدول الكامل: التقويمات اليوليانية والغريغورية" أعلاه. وهو يسرد نفس التعديلات الثلاثة للأشهر الثلاثة الأولى من السنوات غير الكبيسة، وسبعة تعديلات أعلى للأشهر الأخيرة، ويقدم تعليمات غامضة للعثور على الباقي، ويجب تحديد تعديلاته للقرون باستخدام صيغ مماثلة لتلك المستخدمة في جدول القرون. مع تأكيده صراحةً على أن طريقته تعمل أيضًا مع تواريخ الطراز القديم فقد أعاد إنتاج مثاله أدناه لتحديد أن "1676 فبراير&nbsp;23" هو يوم الأربعاء فقط ويعمل على التقويم اليولياني الذي يبدأ العام في يناير&nbsp;1، بدلا من مارس&nbsp;25 كما في التقويم اليولياني "النمط القديم".

**الخوارزمية:**

خذ التاريخ المحدد في الـ4&nbsp;أجزاء أي عدد القرون وعدد السنوات الماضية والشهر ويوم الشهر.

احسب الـ 4 عناصر الآتية&nbsp;وإضافة كل منها -عند العثور عليها- إلى إجمالي العناصر السابقة. وعندما يتجاوز أحد العناصر أو الإجمالي&nbsp;7 تقوم بالقسمة على&nbsp;7، واحتفظ بالباقي فقط.

لعنصر القرن: لـ " الطراز القديم " (الذي انتهى في عام 2008)&nbsp;(سبتمبر 1752) اطرح من 18. بالنسبة لـل " الأسلوب الجديد " (الذي بدأ في عام 14&nbsp;سبتمبر 1752) نقسم على 4 ونأخذ المتبقي [الفائض] من 3 ونضرب الباقي في 2.

عنصر السنة: أضف معًا عدد العشرات والباقي وعدد الـ 4 في الفائض.

عنصر الشهر: إذا بدأ أو انتهى بحرف متحرك اطرح الرقم الذي يدل على مكانه في السنة من 10. وهذا بالإضافة إلى عدد أيامه فيعطي العنصر للشهر التالي. العنصر لشهر يناير هو "0"، ولشهر فبراير أو مارس "3"، ولشهر ديسمبر "12".

بند اليوم: يجب تصحيح الإجمالي الذي كان التوصل إليه بهذه الطريقة عن طريق طرح "1" (إضافة 7 أولاً إذا كان الإجمالي "0")، أما إذا كان التاريخ هو يناير أو فبراير في سنة كبيسة -مع تذكر أن كل عام قابل للقسمة على 4 هو سنة كبيسة- باستثناء سنوات القرون فقط، وفي "النمط الجديد" عندما لا يكون عدد القرون قابلاً للقسمة بهذه الطريقة (على سبيل المثال 1800).

النتيجة النهائية تعطي يوم الأسبوع "0" يعني الأحد، "1" يعني الاثنين وهكذا.

**أمثلة:**

1783 سبتمبر&nbsp;18

17 مقسومًا على 4 يترك "1"، 1 من 3 يعطي "2"، مرتين 2 يعطي "4". 83 هو 6 دزينات و11 مما يعطي 17، بالإضافة إلى 2 يعطي 19 أي (القسمة على 7) "5". المجموع 9 أي "2" العنصر الخاص بشهر أغسطس هو "8 من 10" أي "2"، لذلك بالنسبة لشهر سبتمبر يكون "2 زائد 31" أي "5" المجموع 7 أي "0" والذي يخرج. 18 يعطي "4". الجواب "الخميس".

1676 فبراير&nbsp;23

16 من 18 يعطي "2" 76 هو 6 دزينات و 4 مما يعطي 10، زائد 1 يعطي 11 أي "4". المجموع "6" العنصر لشهر فبراير هو "3". المجموع 9 أي "2" 23 يعطي "2". مجموع "4" تصحيح للسنة الكبيسة يعطي "3". الجواب "الأربعاء".

يكون إعطاء التواريخ قبل عام 1752 في إنجلترا بالأسلوب القديم مع 25&nbsp;شهر مارس هو أول أيام العام الجديد. ومع ذلك فإن طريقة كارول تفترض 1&nbsp;يناير هو اليوم الأول من السنة ومن ثم فشل في الوصول إلى الإجابة الصحيحة وهي "الجمعة".

ولو لاحظ أن *1676 23 فبراير* (مع 25&nbsp;(مارس كيوم رأس السنة الجديدة) هو في الواقع *1677 23 فبراير* (مع 1&nbsp;ولكن إذا كان من المفترض أن يكون أول يناير هو رأس السنة الجديدة، فإنه كان سيأخذ في الاعتبار اختلاف أرقام السنوات -تمامًا كما يختلف تاريخ ميلاد جورج واشنطن- بين التقويمين. ثم تسفر طريقته عن:

1677 (مصحح) 23 فبراير

16 من 18 يعطي "2" 77 هو 6 دزينات و 5 مما يعطي 11، زائد 1 يعطي 12 أي "5". المجموع "7" العنصر لشهر فبراير هو "3". المجموع 10 أي "3" 23 يعطي "2". المجموع "5". الجواب "الجمعة".

ومن الجدير بالذكر أن أولئك الذين أعادوا نشر طريقة كارول فشلوا في الإشارة إلى خطئه، وأبرزهم مارتن جاردنر.

في عام 1752 تخلت الإمبراطورية البريطانية عن استخدام التقويم الجولياني القديم واعتمدت التقويم الغريغوري، والذي أصبح التقويم القياسي اليوم في معظم بلدان العالم. لمزيد من المعلومات راجع تواريخ الطراز القديم والطراز الجديد.

## الأساليب في برمجة الكمبيوتر

### كيث
في تعبيرات لغة السي أدناه -`y` و `m` و `d` هي على التوالي- متغيرات عددية صحيحة تمثل السنة (على سبيل المثال 1988) والشهر (1-12) ويوم الشهر (1-31).
```c
(d+=m<3 ? y-- : y-2,23*m/9+d+4+y/4-y/100+y/400) % 7
```
في عام 1990 نشر مايكل كيث وتوم كرافر التعبير السابق الذي يسعى إلى تقليل عدد ضغطات المفاتيح اللازمة لإدخال وظيفة مستقلة لتحويل التاريخ الميلادي إلى يوم رقمي من أيام الأسبوع. ويعود `0` = الأحد و`1` = الاثنين وهكذا. ويستخدم هذا التعبير مكون شهر أقل تعقيدًا من خوارزمية زيلر.

وبعد فترة وجيزة قام هانز لاكمان بتبسيط خوارزميتهم لتسهيل الاستخدام على الأجهزة ذات المواصفات المنخفضة. وبما أن طريقته مصممة في الأصل للآلات الحاسبة ذات الوظائف الأربع، فإنها تحتاج إلى عدد أقل من إدخالات لوحة المفاتيح من طريق الحد من نطاقها إما إلى الفترة من 1905 إلى 2099 ميلادية، أو إلى التواريخ الجوليانية التاريخية. وقد عُدل لاحقًا لتحويل أي تاريخ ميلادي -حتى على العداد-. وفي الأجهزة التي تعتمد على موتورولا 68000 هناك حاجة أقل أيضًا إلى سجلات المعالج أو التعليمات البرمجية التشغيلية هذا اعتمادًا على هدف التصميم المقصود.

### أساليب ساكاموتو
يكون تجسيد السلف الجدولي لخوارزمية توندرينغ في دالة كي آند أر. سي التالية. مع بعض التغييرات البسيطة التي قام بتكييفها للغات البرمجة عالية المستوى الأخرى مثل إيه بيه أل2 . ونشرها توموهيكو ساكاموتو على مجموعة أخبار يوسنت كامب.لانج.سي في عام 1992 وهو دقيق لأي تاريخ ميلادي.
```c
dayofweek(y, m, d)	/* 1 <= m <= 12, y > 1752 (in the U.K.) */
{
  static int t[] = {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4};
  if ( m < 3 )
  {
    y -= 1;
  }
  return (y + y/4 - y/100 + y/400 + t[m-1] + d) % 7;
}
```
يعود الـ `0` = الأحد والـ`1` = الاثنين وهكذا.

كما نشر ساكاموتو في نفس الوقت نسخة أكثر غموضًا:
```c
dow(m,d,y) { y -= m<3; return (y+y/4-y/100+y/400+"-bed=pen+mad."[m]+d) % 7; }
```
يقوم هذا الإصدار بتشفير إزاحات الشهر في السلسلة ونتيجة لذلك يتطلب جهاز كمبيوتر يستخدم أسكي القياسي لتشغيل الخوارزمية بوجه صحيح، مما يقلل من قابليتها للنقل. بالإضافة إلى ذلك،تتجاهل كلتا الخوارزميتين إعلانات نوع  وهو أمر مسموح به في كي آند آر لغة سي الأصلية ولكن غير مسموح به في أنسي سي.

(ومرة أخرى تشبه خوارزمية توندرينغ في بنيتها تطابق زيلر وشفرة كيث القصيرة، فيما عدا أن المكون المتعلق بالشهر هو . وتقع خوارزمية ساكاموتو في مكان ما بين خوارزمية غاوسي المتباينة وخوارزمية شفيردتفيغر كما ويبدو أنه غير مدرك لشكل التعبير.)

### طريقة جاوس في ماتلاب

```matlab
% example date input
y1 = 2022;
m1 = 1;
d1 = 1;

month_offset = [0 3 3 6 1 4 6 2 5 0 3 5]؛ % common year

% offset if y1 leap year
if mod(y1,4)==0 && mod(y1,100)==0 && mod(y1,400)==0
   month_offset=[0 3 4 0 2 5 0 3 6 1 4 6]؛ % leap year
end

% Gregor
weekday_gregor = rem( d1+month_offset(m1) + 5*rem(y1-1,4) + 4*rem(y1-1,100) + 6*rem(y1-1,400),7)

% Julian
weekday_julian = rem(6+5*rem(y1-1,4) + 3*(y1-1),7)
```
0: الأحد 1: الإثنين .. 6: السبت

### طريقة  للتقويم الغريغوري في بايثون

```python3
from numpy import remainder as rem

def is_leap_year(year: int) -> bool:
    """ Determine whether a year is a leap year. """
    return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)
    
def day_of_week(y: int, m: int, d: int) ->str:
    ''' return day of week of given date as string,
    using Gauss's algorithm to find it '''
    if is_leap_year(y):
        month_offset = (0, 3, 4, 0, 2, 5, 0, 3, 6, 1, 4, 6)[m - 1]
    else:
        month_offset = (0, 3, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5)[m - 1]        
    y -= 1
    wd = int(rem(d + month_offset + 5 * rem(y, 4) + 4 * rem(y, 100) \
             + 6 * rem(y, 400) , 7))
    
    return ('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat')[wd]
```


## انظر أيضا

* حكم يوم القيامة
* يوم جوليان
* كأس العالم للحساب الذهني (يوجد مسابقة حساب التقويم)
* التقويم الدائم
* التقويم البوذي

## المراجع

### ملحوظات

### الاستشهادات

## روابط خارجية

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

تصنيف:أيام الأسبوع
تصنيف:تقويم يوليوسي
تصنيف:تقويم غريغوري
تصنيف:وحدات زمن