تقنية

سنة الأسبوع في ميزات التاريخ: هل تطابق سنة التقويم دائما؟

تاريخ في ديسمبر ألفين وتسعة عشر وتاريخ في يناير ألفين وعشرين ينتميان إلى أسبوع ISO الأول من سنة ألفين وعشرين
رسم أصلي لمثال تقويمي؛ لا يصف أحداثا أو مواعيد فعلية.

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

الخلاصة السريعة

لا؛ في نظام ISO قد يقع يوم من أواخر ديسمبر في الأسبوع الأول من سنة الأسبوع التالية، أو يوم من يناير في سنة الأسبوع السابقة.

  • تعيد isocalendar في Python سنة ISO ورقم الأسبوع ويومه. يبدأ أسبوع ISO الاثنين، ويكون الأسبوع الأول الذي يضم أول خميس من السنة. [1]
  • نختار 30 ديسمبر 2019 و 2 يناير 2020: سنة التقويم 2019 و 2020 ، لكنهما في سنة ISO2020 والأسبوع 1. التاريخان مثال حساب، لا سجلا لحدث وقع.
  • لا نخلط سنة التقويم مع رقم أسبوع ISO لصنع مفتاح؛ نقرن رقم الأسبوع بسنة ISO. يبقى رقم 1 وحده غير كاف لتمييز أسابيع من سنوات مختلفة.
  • نحفظ التاريخ ونظام التقويم والأسبوع ومرجع الوقت إذا اشتققنا اليوم من طابع زمني. الاتفاق على المفتاح لا يثبت دقة تسجيل الحدث أو تحسن النموذج، ولا يطبق تلقائيا على نظام أسبوع آخر.

أي سنة يعيدها نظام الأسبوع؟

توضح وثائق Python أن isocalendar يعيد سنة ISO والأسبوع ويوم الأسبوع. تتكون سنة ISO من أسابيع كاملة تبدأ الاثنين، ويعرف أولها بوجود أول خميس من السنة فيه. [1]

سنة التقويم هي جزء التاريخ الميلادي الذي نقرؤه بجانب الشهر واليوم. أما سنة الأسبوع فهي جزء تعريف المجموعة الأسبوعية. لا نسمي إحداهما تصحيحا للأخرى؛ لكل منهما السؤال الذي تصفه.

نحصر المثال في التقويم الميلادي ونظام أسبوع ISO. لا نفترض أن رقم أسبوع صادرًا من أداة أخرى يستخدم القاعدة نفسها، أو أن بداية الأسبوع المختارة محليا تطابقها بلا توثيق.

كيف يجتمع تاريخان من سنتين مختلفتين؟

نختار التاريخين من عندنا لفحص الحد بين سنتين. الاثنين 30 ديسمبر 2019 والخميس 2 يناير 2020 داخل الأسبوع نفسه؛ والخميس هو أول خميس في 2020. وفق القاعدة، يحمل الأسبوع سنة ISO2020 ورقم 1.

لذلك لا يوجد تناقض في أن يحمل يوم ديسمبر سنة تقويم 2019 وسنة أسبوع 2020. تاريخ اليوم لم يتغير، وإنما وصفنا عضويته في مجموعة أسبوعية تعبر حد السنة الميلادية.

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

التاريخ المختارسنة التقويمسنة ISOرقم أسبوع ISO
30 ديسمبر 2019201920201
2 يناير 2020202020201

كيف ينتج مفتاح أسبوع ملتبس؟

لو جمعنا سنة التقويم من العمود الثاني مع رقم أسبوع ISO من الرابع، لسمينا اليوم الأول «2019 ، أسبوع 1» والثاني «2020 ، أسبوع 1». بهذا فرقنا أيام أسبوع ISO واحد باستخدام سنة من نظام آخر.

إذا كان السؤال تجميع أيام أسبوع ISO، نستخدم زوج سنة ISO ورقم أسبوع ISO. في الجدول يصبح مفتاح اليومين «2020 ، 1». وإذا احتجنا سنة التقويم لغرض آخر، نحتفظ بها بحقل منفصل واضح الاسم.

كذلك لا يكفي رقم الأسبوع 1 وحده إذا امتدت البيانات عبر سنوات؛ قد يظهر الرقم نفسه في سنة أخرى. فصل أسماء الحقول يقلل الالتباس، لكنه لا يحدد تلقائيا أي تقويم أنسب لسؤال النموذج.

ما الذي نوثقه عند اشتقاق ميزات التاريخ؟

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

نراجع أمثلة قرب نهاية ديسمبر وبداية يناير، بدل الاكتفاء بأيام لا يظهر فيها الفرق. ويمكن التحقق حسابيا من الجدول باستخدام تقويم ISO موثق، مع حفظ طريقة التحقق ونسخته عند التنفيذ.

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

المصادر ومتابعة القراءة

  1. Python: date.isocalendar (يفتح في نافذة جديدة)docs.python.org

أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.