للتعبير عن الفرق بين تاريخين بالسنوات والأشهر والأيام التقويمية، احسب الأشهر التقويمية أولًا، ثم الأيام المتبقية. يستخدم هذا الشرح لبرنامج Numbers تواريخ نشر افتراضية وقاعدة صريحة لنهاية الشهر، حتى تتمكن من التحقق من النتيجة.
على سبيل المثال، ينتج عن الفترة من 18 مايو 2022 إلى 24 سبتمبر 2025 3 سنوات و4 أشهر و6 أيام وفقًا للطريقة أدناه. ستنشئ جدول بيانات قابلًا لإعادة الاستخدام يتعامل أيضًا مع فبراير والسنوات الكبيسة وتواريخ مثل 31 يناير.
اختر المقصود بالفرق التقويمي
يتطلب حساب الفرق التقويمي تاريخ بداية وقاعدة للانتقال بين الأشهر. لا يمكن للقسمة على 365 ثم على 30 الحفاظ على الحدود التقويمية، إذ تختلف أطوال الأشهر والسنوات. توضح وثائق واجهة التواريخ لدى TC39 هذا الاختلاف صراحةً عند شرح سبب كون الأيام هي الوحدة الافتراضية لفروق التواريخ ما لم تُطلب وحدة أكبر. وثائق Temporal.PlainDate.
يستخدم هذا الشرح الاصطلاح التالي للتواريخ الميلادية الحديثة:
- انتقل من التاريخ الأسبق إلى التاريخ الأحدث.
- أوجد أكبر إزاحة بعدد صحيح من الأشهر لا يتجاوز مرساها التقويمي تاريخ النهاية.
- احتفظ برقم يوم البداية إذا كان موجودًا في الشهر المستهدف؛ وإلا فاستخدم آخر يوم في ذلك الشهر.
- عبّر عن كل 12 شهرًا بسنة واحدة، ثم احسب الأيام من المرساة إلى تاريخ النهاية.
وفقًا لهذا الاصطلاح، تمثل الفترة من 31 يناير إلى 28 فبراير 2025 شهرًا واحدًا. أما الفترة من 31 يناير إلى 30 مارس 2025 فتمثل شهرًا واحدًا و30 يومًا: إذ ستكون مرساة الشهرين هي 31 مارس، متجاوزةً تاريخ النهاية. هذه نتائج للقاعدة المختارة، وليست تعريفات عامة للشهر.
استخدم حساب الأيام المنقضية بدلًا من احتساب يومي البداية والنهاية ضمن المدة. لذلك ينتج عن تساوي التاريخين صفر سنة وصفر شهر وصفر يوم. إذا كانت مهمتك هي حساب عدد إدخالات التقويم المؤرخة التي تشملها فترة ما، فهذا حساب مختلف.
افصل التواريخ المدنية عن الطوابع الزمنية
تاريخ نشر مثل 2025-09-24 هو تاريخ مدني: سنة وشهر ويوم في تقويم. لا يحدد ساعة ولا يشير إلى لحظة زمنية. أما الطابع الزمني مثل 2025-09-24T00:30:00+02:00 فيتضمن وقتًا وإزاحة رقمية عن UTC، ما يتيح له تحديد لحظة زمنية. يحدد RFC 3339 الصياغة المقابلة للتاريخ الكامل والتاريخ والوقت. RFC 3339: التاريخ والوقت على الإنترنت: الطوابع الزمنية.
تصف إزاحة مثل +02:00 العلاقة بـ UTC. أما منطقة مسماة مثل Europe/Paris فتوفّر قواعد التحويل بين اللحظات الزمنية والأوقات المحلية؛ وقد تتغير الإزاحة المطبقة فيها. يميز RFC 9557 بين هذين المفهومين ويوضح سبب عدم كفاية الإزاحة وحدها لتوفير القواعد اللازمة للحساب التقويمي المحلي. RFC 9557: الطوابع الزمنية مع معلومات إضافية.
في جدول البيانات هذا، أدخل تواريخ النشر المقصودة مباشرةً. إذا كان المصدر يحتوي على طوابع زمنية، فحدد أولًا المنطقة المسماة التي تحدد يوم النشر، ثم حوّل الطابعين الزمنيين إلى تاريخين في تلك المنطقة. على سبيل المثال، 2025-09-24T00:30:00+02:00 هي اللحظة نفسها التي يمثلها 2025-09-23T22:30:00Z؛ وقد يؤدي اختيار التاريخ المعروض قبل اختيار المنطقة المرجعية إلى تغيير الإدخال بيوم واحد.
أنشئ ورقة حساب الفرق بين التاريخين في Numbers
تحتاج إلى Numbers على جهاز Mac وإلى جدول بأعمدة من A إلى J وصفين على الأقل. استخدم الصف 1 للعناوين والصف 2 للحساب. تستخدم الصيغ أدناه أسماء الدوال الإنجليزية والفواصل.
لإدخال كل صيغة، حدد الخلية المستهدفة، واكتب الصيغة أو الصقها بدءًا من =، ثم اضغط على Return. توضح Apple أن كتابة علامة يساوي تفتح محرر الصيغ، مع توفر مساعدة الدوال في متصفح الدوال. حساب القيم باستخدام بيانات خلايا الجدول في Numbers على Mac.
أدخل تاريخي بداية ونهاية واضحين
ضع التسمية تاريخ البداية في A1 والتسمية تاريخ النهاية في B1. أدخل تواريخ النشر الافتراضية التالية:
| الخلية | الصيغة | التاريخ المقصود |
|---|---|---|
A2 |
=DATE(2022,5,18) |
18 مايو 2022 |
B2 |
=DATE(2025,9,24) |
24 سبتمبر 2025 |
يؤدي استخدام DATE(year,month,day) إلى تفادي الالتباس بين التفسيرات الإقليمية لسلاسل التواريخ. وتوصي Apple تحديدًا بهذه الدالة لضمان تفسير التواريخ باتساق عبر الإعدادات الإقليمية. أدخل تواريخ تقويمية صحيحة، بما يشمل العدد الصحيح من الأيام في كل شهر. DATE.
قبل المتابعة، تأكد من أن تاريخ النهاية يساوي تاريخ البداية أو يأتي بعده. تحسب هذه الورقة الفرق بالاتجاه الأمامي عمدًا؛ ولا تحدد فترات تقويمية سالبة.
أوجد آخر مرساة تقويمية تسبق تاريخ النهاية
أدخل هذه التسميات والصيغ في الصف 2، بالترتيب:
| الخلية | تسمية الصف 1 | صيغة الصف 2 |
|---|---|---|
C2 |
الأشهر المرشحة |
=(YEAR(B2)-YEAR(A2))*12+MONTH(B2)-MONTH(A2) |
D2 |
الأشهر المكتملة |
=C2-IF(DATE(YEAR(B2),MONTH(B2),MIN(DAY(A2),DAY(EOMONTH(B2,0))))>B2,1,0) |
E2 |
بداية شهر المرساة |
=EDATE(DATE(YEAR(A2),MONTH(A2),1),D2) |
F2 |
تاريخ المرساة |
=DATE(YEAR(E2),MONTH(E2),MIN(DAY(A2),DAY(EOMONTH(E2,0)))) |
تحسب الصيغة الأولى المسافة بين موضعي السنة والشهر. تستخرج دالتا YEAR وMONTH لدى Apple هذين المكوّنين من قيم التاريخ. YEAR، MONTH.
تختبر الصيغة الثانية مرساة في شهر النهاية. ويكون يومها هو الأصغر بين يوم البداية وآخر يوم في ذلك الشهر. إذا تجاوز هذا التاريخ المرشح تاريخ النهاية، تطرح الصيغة شهرًا واحدًا. يستخدم هذا التعديل الشرطي السلوك الموثق للدالة IF. IF.
تنشئ الصيغ المتبقية المرساة الفعلية. تنقل EDATE اليوم الأول من شهر البداية بمقدار الإزاحة المحسوبة، فتتجنب يومًا غير صالح خلال هذه الخطوة الوسيطة. EDATE.
ثم تطبق ورقة الحساب قاعدة نهاية الشهر صراحةً: تستخرج DAY رقم اليوم، وتوفر EOMONTH التاريخ الأخير في الشهر المستهدف، وتختار MIN أصغر رقم يوم. وهكذا تصبح طريقة التعامل مع الأشهر الأقصر واضحة في الصيغة. DAY، EOMONTH، MIN.
عبّر عن النتيجة بالسنوات والأشهر والأيام
أكمل ورقة الحساب بهذه الصيغ:
| الخلية | تسمية الصف 1 | صيغة الصف 2 |
|---|---|---|
G2 |
السنوات |
=QUOTIENT(D2,12) |
H2 |
الأشهر |
=MOD(D2,12) |
I2 |
الأيام |
=DATEDIF(F2,B2,"D") |
J2 |
الفرق التقويمي |
=G2&" years, "&H2&" months, "&I2&" days" |
تعطي QUOTIENT ناتج القسمة على شكل عدد صحيح، وتعطي MOD الباقي، فتحول عدد الأشهر المكتملة إلى سنوات وأشهر متبقية. QUOTIENT، MOD.
بالنسبة إلى التواريخ النموذجية، ينبغي أن تكون قيمة D2 هي 40، وأن تمثل F2 18 سبتمبر 2025. وتُكمل الأيام الستة بين تلك المرساة و24 سبتمبر النتيجة: 3 سنوات و4 أشهر و6 أيام. تستخدم صيغة النص تسميات ثابتة بصيغة الجمع للتبسيط؛ وتظل الأعمدة الرقمية المنفصلة متاحة للحسابات الأخرى.
تحقق من نهايات الأشهر والسنوات الكبيسة
استخدم أزواج التواريخ الافتراضية التالية للتحقق من اصطلاح ورقة الحساب. استبدل الصيغتين في A2 وB2 فقط، مع الاحتفاظ بالصيغ الأخرى:
| تاريخ البداية | تاريخ النهاية | السنوات والأشهر والأيام المتوقعة | تاريخ المرساة |
|---|---|---|---|
| 18 مايو 2022 | 24 سبتمبر 2025 | 3، 4، 6 | 18 سبتمبر 2025 |
| 31 يناير 2025 | 28 فبراير 2025 | 0، 1، 0 | 28 فبراير 2025 |
| 31 يناير 2024 | 29 فبراير 2024 | 0، 1، 0 | 29 فبراير 2024 |
| 29 فبراير 2024 | 28 فبراير 2025 | 1، 0، 0 | 28 فبراير 2025 |
| 31 يناير 2025 | 30 مارس 2025 | 0، 1، 30 | 28 فبراير 2025 |
| 24 سبتمبر 2025 | 24 سبتمبر 2025 | 0، 0، 0 | 24 سبتمبر 2025 |
هذه أمثلة محسوبة وفقًا للقاعدة المذكورة. جرى التحقق من خوارزمية المرساة الأساسية بحساب حتمي باستخدام Python، بما في ذلك 10,000 زوج تاريخ مولّد؛ ولم تُشغّل واجهة Numbers نفسها.
تحقق من النتيجة بإعادة بناء مسارها: ابدأ بتاريخ البداية الأصلي، وانتقل بعدد الأشهر الإجمالي في D2 وفقًا لقاعدة نهاية الشهر المذكورة، ثم أضف عدد الأيام في I2. ينبغي أن تصل إلى تاريخ النهاية. احسب مرساة الشهر دائمًا انطلاقًا من تاريخ البداية الأصلي؛ فقد يؤدي الانتقال شهرًا واحدًا في كل مرة إلى فقدان رقم اليوم الأصلي بعد فبراير.
لماذا لا نجمع ثلاث نتائج من DATEDIF؟
توثق Apple خيارات DATEDIF للسنوات، والأشهر مع تجاهل السنوات، والأيام مع تجاهل الأشهر والسنوات. يطبق الخيار \"MD\" حسابًا محددًا لرقم اليوم يتضمن استبدال الأشهر. لذلك لا ينبغي افتراض أنه يعني الأيام المتبقية بعد تعديل نهاية الشهر الذي اخترته. تستخدم ورقة الحساب هذه \"D\" فقط بين المرساة الصريحة وتاريخ النهاية. DATEDIF.
كيف تقابل العملية واجهة برمجة للتواريخ
توثق TC39 للمطوّرين الذين ينفذون هذه المهمة نوعًا مخصصًا للتواريخ فقط هو Temporal.PlainDate، وعملية لحساب الفروق مع مراعاة التقويم. ينتج عن طلب until مع largestUnit: 'year' مدة معبّر عنها بالسنوات والوحدات الأصغر؛ أما ترك الخيارات الافتراضية فينتج فرقًا محسوبًا بالأيام. وتصف الوثائق أيضًا إضافة الأشهر مع تقييد اليوم، وترفض حساب الفروق بين تواريخ تستخدم أنظمة تقويم مختلفة ما لم تُحوّل إلى تقويم مشترك. وثائق Temporal.PlainDate.
تؤكد خيارات واجهة البرمجة هذه القرارات الأساسية في ورقة الحساب: تحديد المدخلات التي تمثل تواريخ فقط، واختيار التقويم، وتحديد أكبر وحدة، والاحتفاظ بمرساة لتفسير الأشهر. تصف معايير سلاسل التواريخ صيغ التمثيل؛ واختيار صيغة وحده لا يحدد قاعدة نهاية الشهر لمهمتك.
عالج النتائج غير المتوقعة قبل استخدام الناتج
إذا ظهرت رسالة خطأ في صيغة، فحدد مؤشر الخطأ لقراءة الرسالة؛ ويوثق دليل Numbers من Apple هذه الخطوة التشخيصية. تحقق من مراجع الخلايا، واستخدم متصفح الدوال لإدراج الوسيطات إذا كان تثبيتك يتطلب فواصل مختلفة للصيغ. حساب القيم باستخدام بيانات خلايا الجدول في Numbers على Mac.
إذا بدت النتيجة معقولة لكنها اختلفت عن نتيجة أداة أخرى، فقارن قاعدة نهاية الشهر فيها بقاعدة ورقة الحساب هذه. وتحقق أيضًا مما إذا كانت الأداة الأخرى تحتسب يومي البداية والنهاية، أو تستخدم طوابع زمنية بدلًا من التواريخ المدنية، أو تقرّب النتيجة. لا تُدخل تواريخ معكوسة أو مدخلات فارغة في هذا الحساب الأمامي بدلًا من استبدال الأخطاء بصفر.
لمقارنة تواريخ النشر بشكل قابل لإعادة الاستخدام، احتفظ بتاريخ البداية وتاريخ النهاية والمرساة بجوار الصياغة النهائية. وهكذا تصبح نتيجة مثل «3 سنوات و4 أشهر و6 أيام» قابلة للتتبع إلى حساب تقويمي محدد.
المصادر
- حساب القيم باستخدام بيانات خلايا الجدول في Numbers على Mac — Apple.
- DATE — Apple.
- YEAR — Apple.
- MONTH — Apple.
- IF — Apple.
- EDATE — Apple.
- DAY — Apple.
- EOMONTH — Apple.
- MIN — Apple.
- QUOTIENT — Apple.
- MOD — Apple.
- DATEDIF — Apple.
- Temporal.PlainDate — Ecma TC39.
- RFC 3339: التاريخ والوقت على الإنترنت: الطوابع الزمنية — RFC Editor.
- RFC 9557: التاريخ والوقت على الإنترنت: الطوابع الزمنية مع معلومات إضافية — RFC Editor.