لحل بعض المشاكل عند إنشاء جدول، تحتاج إلى الإشارة إلى عدد الأيام في الشهر في خلية منفصلة أو داخل صيغة حتى يتمكن البرنامج من إجراء الحسابات اللازمة. يحتوي Excel على أدوات مصممة لتنفيذ هذه العملية. دعونا نلقي نظرة على طرق مختلفة لاستخدام هذه الميزة.
يمكنك حساب عدد أيام الشهر في Excel باستخدام عوامل تشغيل الفئات الخاصة "التاريخ و الوقت". لمعرفة الخيار الأفضل للاستخدام، عليك أولاً تحديد أهداف العملية. بناءً على ذلك، يمكن عرض نتيجة الحساب في عنصر منفصل على الورقة، أو يمكن استخدامها داخل صيغة أخرى.
إن أبسط طريقة لحل هذه المشكلة هي الجمع بين العوامل يومو EON-MONTH.
وظيفة يومينتمي إلى مجموعة المشغلين "التاريخ و الوقت". يشير إلى رقم محدد من 1 قبل 31 . في حالتنا، ستكون مهمة هذا العامل هي الإشارة إلى اليوم الأخير من الشهر باستخدام الوظيفة المضمنة كوسيطة EON-MONTH.
بناء جملة المشغل يومالتالي:
DAY(date_in_numeric_format)
وهذا يعني أن الوسيطة الوحيدة لهذه الوظيفة هي "التاريخ بالتنسيق الرقمي". سيتم ضبطه من قبل المشغل EON-MONTH. ويجب القول أن التاريخ بالتنسيق الرقمي يختلف عن التنسيق المعتاد. على سبيل المثال، التاريخ 04.05.2017 في شكل رقمي سوف تبدو 42859 . ولذلك، يستخدم Excel هذا التنسيق فقط للعمليات الداخلية. ونادرا ما يستخدم للعرض في الخلايا
المشغل أو العامل EON-MONTHوالمقصود منه هو الإشارة إلى الرقم التسلسلي لليوم الأخير من الشهر، وهو عدد محدد من الأشهر للأمام أو للخلف من التاريخ المحدد. بناء جملة الدالة هو:
EON-MONTH(start_date;number_of_months)
المشغل أو العامل "تاريخ البدء"يحتوي على التاريخ الذي تم حسابه منه، أو رابط للخلية التي يقع فيها.
المشغل أو العامل "عدد الأشهر"يشير إلى عدد الأشهر التي يتم حسابها من تاريخ معين.
الآن دعونا نرى كيف يعمل هذا مع مثال محدد. للقيام بذلك، خذ ورقة Excel، في إحدى الخلايا التي تم إدخال تاريخ تقويم معين فيها. من الضروري، باستخدام مجموعة العوامل المذكورة أعلاه، تحديد عدد الأيام الموجودة في الفترة الشهرية التي يشير إليها هذا الرقم.
أخذت صيغتنا العامة الشكل التالي:
يوم(شهر(ب3,0))
في هذه الصيغة، القيمة المتغيرة الوحيدة هي عنوان الخلية ( ب3). وبالتالي، إذا كنت لا ترغب في تنفيذ الإجراء عبر معالجات الوظائف، يمكنك إدراج هذه الصيغة في أي عنصر من عناصر الورقة بمجرد استبدال عنوان الخلية التي تحتوي على الرقم بالعنوان المناسب لحالتك الخاصة. وستكون النتيجة مماثلة.
الآن دعونا ننظر إلى مشكلة أخرى. من الضروري ألا يتم عرض عدد الأيام وفقًا لتاريخ تقويمي معين، بل وفقًا للتاريخ الحالي. بالإضافة إلى ذلك، سيتم تغيير الفترات تلقائيًا دون تدخل المستخدم. ورغم أن الأمر يبدو غريبا، إلا أن هذه المهمة أسهل من المهمة السابقة. لحلها، حتى مفتوحة معالج الوظائفليست ضرورية لأن الصيغة التي تنفذ هذه العملية لا تحتوي على قيم متغيرة أو مراجع خلايا. يمكنك ببساطة إدخال الصيغة التالية دون إجراء تغييرات في خلية الورقة حيث تريد عرض النتيجة:
يوم(شهر(اليوم(),0))
تعرض وظيفة TODAY المضمنة التي استخدمناها في هذه الحالة تاريخ اليوم ولا تحتوي على أي وسائط. وبالتالي، ستعرض خليتك باستمرار عدد الأيام في الشهر الحالي.
في الأمثلة أعلاه، أظهرنا كيفية حساب عدد الأيام في الشهر بناءً على تاريخ تقويمي محدد أو تلقائيًا بناءً على الشهر الحالي، مع عرض النتيجة في خلية منفصلة. ولكن قد تكون هناك حاجة أيضًا إلى إيجاد هذه القيمة لحساب مؤشرات أخرى. في هذه الحالة، سيتم حساب عدد الأيام داخل صيغة معقدة ولن يتم عرضها في خلية منفصلة. دعونا نرى كيفية القيام بذلك مع مثال.
نحتاج إلى التأكد من أن الخلية تعرض عدد الأيام المتبقية حتى نهاية الشهر الحالي. كما في الطريقة السابقة، لا يتطلب هذا الخيار فتحه معالجات الوظائف. يمكنك ببساطة إدخال التعبير التالي في الخلية:
DAY(MONTH(TODAY(),0))-DAY(TODAY())
بعد ذلك سيتم عرض عدد الأيام حتى نهاية الشهر في الخلية المحددة. كل يوم سيتم تحديث النتيجة تلقائيا، ومن بداية الفترة الجديدة سيبدأ العد التنازلي من جديد. اتضح أنه نوع من مؤقت العد التنازلي.
كما ترون، تتكون هذه الصيغة من جزأين. الأول هو تعبير مألوف بالفعل لحساب عدد الأيام في الشهر:
يوم(شهر(اليوم(),0))
لكن في الجزء الثاني يتم طرح رقم اليوم من هذا المؤشر:
يوما بعد يوم أو من يوم إلى آخر())
وبالتالي، عند إجراء هذا الحساب، تكون صيغة حساب عدد الأيام جزءًا من صيغة أكثر تعقيدًا.
ولكن، لسوء الحظ، إصدارات البرنامج الأقدم من Excel 2007 لا تحتوي على المشغل EON-MONTH. ماذا عن هؤلاء المستخدمين الذين يستخدمون الإصدارات الأقدم من التطبيق؟ بالنسبة لهم، هذا الاحتمال موجود من خلال صيغة أخرى، وهي أكبر من تلك المذكورة أعلاه. دعونا نرى كيفية حساب عدد أيام الشهر بناءً على تاريخ تقويم معين باستخدام هذا الخيار.
تحتوي النافذة التي تفتح على ثلاثة حقول. في الميدان "يوم"يمكنك إدخال الرقم على الفور "1". سيكون هذا هو نفس الإجراء في أي موقف. لكن المجالين الآخرين سيتعين التعامل معهما بدقة.
ضع المؤشر في الحقل "سنة". بعد ذلك، ننتقل إلى اختيار العوامل من خلال المثلث المألوف.
اليوم(التاريخ(السنة(D3)،الشهر(D3)+1,1)-1)
سر هذه الصيغة بسيط. نستخدمها لتحديد تاريخ اليوم الأول من الدورة التالية، ثم نطرح منه يوم واحد، فنحصل على عدد أيام الشهر المحدد. المتغير في هذه الصيغة هو مرجع الخلية د3في مكانين. إذا قمت باستبداله بعنوان الخلية التي يوجد بها التاريخ في حالتك الخاصة، فيمكنك ببساطة إدخال هذا التعبير في أي عنصر من عناصر الورقة دون أي مساعدة معالجات الوظائف.
كما ترون، هناك عدة خيارات لمعرفة عدد الأيام في الشهر في إكسيل. يعتمد اختيار البرنامج الذي يجب استخدامه على الهدف النهائي للمستخدم، وكذلك على إصدار البرنامج الذي يستخدمه.
تم تصميم حاسبة التاريخ لحساب عدد الأيام بين التواريخ، وكذلك للعثور على تاريخ عن طريق إضافة أو طرح عدد معين من الأيام إلى تاريخ معروف.
لمعرفة التاريخ الذي سيكون بعد عدد معين من الأيام، استخدم هذا الخيار. أدخل تاريخ البدء وعدد الأيام المراد إضافتها إليه. للطرح، استخدم قيمة ناقص. تحتوي الآلة الحاسبة أيضًا على خيار لإضافة أيام العمل فقط.
ستجيب طريقة الحساب هذه على السؤال "كم عدد الأيام التي مرت منذ التاريخ". أدخل تاريخ البدء وتاريخ الانتهاء وانقر على زر "احسب". سوف تظهر الآلة الحاسبة عدد الأيام بين التواريخ التي تم إدخالها. بشكل منفصل، سوف تظهر الآلة الحاسبة عدد أيام العمل.
باستخدام هذا الخيار، يمكنك حساب عدد الأيام المتبقية حتى حدث معين، على سبيل المثال، عيد ميلاد أو عطلة. للقيام بذلك، أدخل تاريخ اليوم في حقل تاريخ البدء، وتاريخ الحدث في حقل تاريخ الانتهاء.
يمكن للآلة الحاسبة حساب وإضافة وطرح أيام التقويم وأيام العمل. العطلات الرسمية غير الرسمية هي:
إذا وقعت العطلة يوم السبت أو الأحد، يتم نقلها إلى يوم العمل التالي. لكن في بعض الأحيان يتم نقل عطلة نهاية الأسبوع إلى مكان مختلف تمامًا في التقويم. على سبيل المثال، قد يتم نقل يومي السبت والأحد اللذين يقعان في عطلات رأس السنة الجديدة إلى شهر مايو من أجل تمديد عطلات شهر مايو.
عند حساب الأيام، تأخذ الآلة الحاسبة في الاعتبار تواريخ العطلات الرسمية وجميع التحويلات.
ملحوظة: هذه التدوينة هي ترجمة للمقال cmcenroe.me/2014/12/05/days-in-month-formula.html ( الجزء الأول)، وكذلك إضافة المؤلف إليه ( الجزء الثاني). ولا ينبغي أن تؤخذ هذه المادة على محمل الجد، بل باعتبارها تمرينًا عقليًا لا يتطلب أكثر من مجرد معرفة بالحساب على مستوى المدرسة وليس له تطبيق عملي. قراءة سعيدة للجميع!
إضفاء الطابع الرسمي بمعنى آخر، من الضروري العثور على الوظيفة F، بحيث تكون القيمة و (خ)لكل شهر س، ويمثلها رقم من 1 إلى 12، يساوي عدد الأيام في ذلك الشهر. جدول الوسيطات وقيم الوظائف:
س | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
و (خ) | 31 | 28 | 31 | 30 | 31 | 30 | 31 | 31 | 30 | 31 | 30 | 31 |
إجابة
تقسيم صحيحهذا عامل يستخدم في العديد من لغات البرمجة لتقسيم عددين صحيحين وإزالة الجزء الكسري من حاصل القسمة. سوف أصورها على أنها. على سبيل المثال:
باقي القسمةهذا هو العامل الذي يجد باقي القسمة. العديد من لغات البرمجة تستخدم الرمز %
، سأستخدم إنشاءات مثل، على سبيل المثال:
لاحظ أن باقي القسمة لها أولوية متساوية مع القسمة.
س | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
و (خ) | 31 | 30 | 31 | 30 | 31 | 30 | 31 | 30 | 31 | 30 | 31 | 30 |
س | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
و (خ) | 30 | 31 | 30 | 31 | 30 | 31 | 30 | 31 | 30 | 31 | 30 | 31 |
س | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
⌊ س ⁄ 8 ⌋ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 |
س | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
و (خ) | 31 | 30 | 31 | 30 | 31 | 30 | 31 | 31 | 30 | 31 | 30 | 31 |
س | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2 وزارة الدفاع س | 0 | 0 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
س | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
و (خ) | 29 | 28 | 31 | 30 | 31 | 30 | 31 | 31 | 30 | 31 | 30 | 31 |
س | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
و (خ) | 31 | 28 | 31 | 30 | 31 | 30 | 31 | 31 | 30 | 31 | 30 | 31 |
الدالة f(x) ( العودة 28 + (x + Math.floor(x/8)) % 2 + 2 % x + 2 * Math.floor(1/x); )
إجابة
لتحويل هذا التعبير إلى تعبير جبري، من الضروري تطبيق حقنة من النموذج على نتيجة التعبير:
والذي سيسمح لك بالحصول على 1 عند القسمة بدون باق و0 عند القسمة بباقي، وذلك لاستخدامه في صيغة تحديد عدد أيام الشهر.
كوظيفة ز"يمكنك استخدام 1 ناقص باقي القسمة من أجل:
س | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ز"(خ) | ما لا نهاية | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
س | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ز"(خ) | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
وهكذا نكتب التعبير بالشكل:
باستخدام هذا النهج نحصل على الوظيفة التالية ز (ص)، والتي ستكون قيمتها 1 إذا كانت السنة سنة كبيسة، أو 0 بخلاف ذلك:
ذ | 1990 | 1991 | 1992 | 1993 | 1994 | 1995 | 1996 | 1997 | 1998 | 1999 | 2000 |
---|---|---|---|---|---|---|---|---|---|---|---|
ز (ص) | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 |
ذ | 2000 | 2100 | 2200 | 2300 | 2400 | 2500 | 2600 | 2700 | 2800 | 2900 | 3000 |
ز (ص) | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 |
اسمحوا لي أن أذكركم أنه، في إطار الاتفاقية المقبولة، يمكن تصوير عامل الحصول على ما تبقى من القسمة على أنه عصري، و ⌊⌋.
س | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
و(خ، 2000) | 31 | 29 | 31 | 30 | 31 | 30 | 31 | 31 | 30 | 31 | 30 | 31 |
و(خ، 2001) | 30 | 28 | 31 | 30 | 31 | 30 | 31 | 31 | 30 | 31 | 30 | 30 |
لتصحيح سوء الفهم المزعج هذا، دعونا نضيف يومًا واحدًا إلى شهر يناير باستخدام الصيغة المعروفة لدينا بالفعل:
س | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
و(خ، 2000) | 31 | 29 | 31 | 30 | 31 | 30 | 31 | 31 | 30 | 31 | 30 | 31 |
و(خ، 2001) | 31 | 28 | 31 | 30 | 31 | 30 | 31 | 31 | 30 | 31 | 30 | 30 |
الدالة f(x, y) ( العودة 28 + ((x + Math.floor(x / 8)) % 2) + 2 % x + Math.floor((1 + (1 - (y % 4 + 2) %) (ص % 4 + 1)) * ((ص % 100 + 2) % (ص % 100 + 1)) + (1 - (ص % 400 + 2) % (ص % 400 + 1))) / س) + Math.floor(1/x) - Math.floor(((1 - (y % 4 + 2) % (y % 4 + 1)) * ((y % 100 + 2) % (y % 100 + 1) )) + (1 - (ص % 400 + 2) % (ص % 400 + 1)))/x )
مثال في C# ideone.com/fANutz.
1
. لا أعرف كيفية استخدام أساليب الإستذكار هذه، لذلك نظرت إلى اللافتة الموجودة على الإنترنت.
2
. "الأساسيات" أو "القاعدة مع العديد من الاستثناءات"، مثل معظم القواعد.
3
. في الأصل، في التقويم الروماني، كان شهر فبراير هو الشهر الأخير من العام، لذلك فمن المنطقي أنه أقصر من جميع الأشهر الأخرى. وهناك أيضًا منطق في إضافة أو إزالة يوم في نهاية العام، فيكون طوله متغيرًا.
تحديث. 1:
الترجمة البديلة للجزء الأول في
ستساعدك الآلة الحاسبة المجانية عبر الإنترنت Kontur.Accounting وتخبرك بعدد الأيام التي مرت بين تاريخين محددين. بالإضافة إلى ذلك، إذا كانت لديك حاجة، يمكنك حساب عدد التقويمات أو عطلات نهاية الأسبوع أو أيام العمل (ساعات) التي تحتوي على فترة محددة من سنة أو عدة سنوات.
ما عليك سوى تعيين يوم بداية ونهاية محددين والحصول على عرض أسعار في جزء من الثانية. تقوم الآلة الحاسبة عبر الإنترنت بحساب جميع البيانات بشكل مستقل. إذا قمت بتغيير أيام الأسبوع الأصلية، فسيتم إعادة حساب النتيجة تلقائيًا لتأخذ في الاعتبار السنوات الكبيسة.
هام: لا يمكنك أخذ أيام/ساعات العمل الشهرية من حسابات العام الماضي وتقديمها كحسابات - ستختلف البيانات. ولذلك فمن الأفضل استخدام الآلة الحاسبة.
إذن الإجراء هو:
أنت محاسب. لقد طلب منك المدير خلال الدقائق القليلة القادمة تقديم بيانات حول عدد ساعات العمل التي يجب أن يعملها جميع موظفي الشركة في شهر فبراير. يمكنك بسهولة تحديد عدد الموظفين - فالأرقام أمام عينيك. ولكن يجب حساب عدد الساعات.... كم عدد أيام شهر فبراير؟ هل هي سنة كبيسة؟ ما هي الأيام التي كانت عطلات نهاية الأسبوع؟ كيفية تحديد عدد أيام العطلات؟
الحل: مجرد استخدام القطعة لدينا. ستتلقى جميع المعلومات تلقائيًا، ولن تحتاج إلى تقويمات سطح المكتب أو الآلات الحاسبة.
هل تريد القيام بالمحاسبة وإرسال التقارير وإجراء الحسابات في خدمة ويب مريحة وبسيطة؟ جرب Kontur.Accounting مجانًا لمدة 14 يومًا! سنعلمك بسرعة كيفية استخدام الخدمة والإجابة على جميع أسئلتك!
ملحوظة: هذه التدوينة هي ترجمة للمقال cmcenroe.me/2014/12/05/days-in-month-formula.html ( الجزء الأول)، وكذلك إضافة المؤلف إليه ( الجزء الثاني). ولا ينبغي أن تؤخذ هذه المادة على محمل الجد، بل باعتبارها تمرينًا عقليًا لا يتطلب أكثر من مجرد معرفة بالحساب على مستوى المدرسة وليس له تطبيق عملي. قراءة سعيدة للجميع!
إضفاء الطابع الرسمي بمعنى آخر، من الضروري العثور على الوظيفة F، بحيث تكون القيمة و (خ)لكل شهر س، ويمثلها رقم من 1 إلى 12، يساوي عدد الأيام في ذلك الشهر. جدول الوسيطات وقيم الوظائف:
س | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
و (خ) | 31 | 28 | 31 | 30 | 31 | 30 | 31 | 31 | 30 | 31 | 30 | 31 |
إجابة
تقسيم صحيحهذا عامل يستخدم في العديد من لغات البرمجة لتقسيم عددين صحيحين وإزالة الجزء الكسري من حاصل القسمة. سوف أصورها على أنها. على سبيل المثال:
باقي القسمةهذا هو العامل الذي يجد باقي القسمة. العديد من لغات البرمجة تستخدم الرمز %
، سأستخدم إنشاءات مثل، على سبيل المثال:
لاحظ أن باقي القسمة لها أولوية متساوية مع القسمة.
س | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
و (خ) | 31 | 30 | 31 | 30 | 31 | 30 | 31 | 30 | 31 | 30 | 31 | 30 |
س | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
و (خ) | 30 | 31 | 30 | 31 | 30 | 31 | 30 | 31 | 30 | 31 | 30 | 31 |
س | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
⌊ س ⁄ 8 ⌋ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 |
س | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
و (خ) | 31 | 30 | 31 | 30 | 31 | 30 | 31 | 31 | 30 | 31 | 30 | 31 |
س | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2 وزارة الدفاع س | 0 | 0 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
س | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
و (خ) | 29 | 28 | 31 | 30 | 31 | 30 | 31 | 31 | 30 | 31 | 30 | 31 |
س | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
و (خ) | 31 | 28 | 31 | 30 | 31 | 30 | 31 | 31 | 30 | 31 | 30 | 31 |
الدالة f(x) ( العودة 28 + (x + Math.floor(x/8)) % 2 + 2 % x + 2 * Math.floor(1/x); )
إجابة
لتحويل هذا التعبير إلى تعبير جبري، من الضروري تطبيق حقنة من النموذج على نتيجة التعبير:
والذي سيسمح لك بالحصول على 1 عند القسمة بدون باق و0 عند القسمة بباقي، وذلك لاستخدامه في صيغة تحديد عدد أيام الشهر.
كوظيفة ز"يمكنك استخدام 1 ناقص باقي القسمة من أجل:
س | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ز"(خ) | ما لا نهاية | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
س | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ز"(خ) | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
وهكذا نكتب التعبير بالشكل:
باستخدام هذا النهج نحصل على الوظيفة التالية ز (ص)، والتي ستكون قيمتها 1 إذا كانت السنة سنة كبيسة، أو 0 بخلاف ذلك:
ذ | 1990 | 1991 | 1992 | 1993 | 1994 | 1995 | 1996 | 1997 | 1998 | 1999 | 2000 |
---|---|---|---|---|---|---|---|---|---|---|---|
ز (ص) | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 |
ذ | 2000 | 2100 | 2200 | 2300 | 2400 | 2500 | 2600 | 2700 | 2800 | 2900 | 3000 |
ز (ص) | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 |
اسمحوا لي أن أذكركم أنه، في إطار الاتفاقية المقبولة، يمكن تصوير عامل الحصول على ما تبقى من القسمة على أنه عصري، و ⌊⌋.
س | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
و(خ، 2000) | 31 | 29 | 31 | 30 | 31 | 30 | 31 | 31 | 30 | 31 | 30 | 31 |
و(خ، 2001) | 30 | 28 | 31 | 30 | 31 | 30 | 31 | 31 | 30 | 31 | 30 | 30 |
لتصحيح سوء الفهم المزعج هذا، دعونا نضيف يومًا واحدًا إلى شهر يناير باستخدام الصيغة المعروفة لدينا بالفعل:
س | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
و(خ، 2000) | 31 | 29 | 31 | 30 | 31 | 30 | 31 | 31 | 30 | 31 | 30 | 31 |
و(خ، 2001) | 31 | 28 | 31 | 30 | 31 | 30 | 31 | 31 | 30 | 31 | 30 | 30 |
الدالة f(x, y) ( العودة 28 + ((x + Math.floor(x / 8)) % 2) + 2 % x + Math.floor((1 + (1 - (y % 4 + 2) %) (ص % 4 + 1)) * ((ص % 100 + 2) % (ص % 100 + 1)) + (1 - (ص % 400 + 2) % (ص % 400 + 1))) / س) + Math.floor(1/x) - Math.floor(((1 - (y % 4 + 2) % (y % 4 + 1)) * ((y % 100 + 2) % (y % 100 + 1) )) + (1 - (ص % 400 + 2) % (ص % 400 + 1)))/x )
مثال في C# ideone.com/fANutz.
1
. لا أعرف كيفية استخدام أساليب الإستذكار هذه، لذلك نظرت إلى اللافتة الموجودة على الإنترنت.
2
. "الأساسيات" أو "القاعدة مع العديد من الاستثناءات"، مثل معظم القواعد.
3
. في الأصل، في التقويم الروماني، كان شهر فبراير هو الشهر الأخير من العام، لذلك فمن المنطقي أنه أقصر من جميع الأشهر الأخرى. وهناك أيضًا منطق في إضافة أو إزالة يوم في نهاية العام، فيكون طوله متغيرًا.
تحديث. 1:
الترجمة البديلة للجزء الأول في