العودة إلى المدونة
3 min read

كيفية حساب العمر في JavaScript (DOB إلى السنوات والأشهر والأيام)

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

كيفية حساب العمر في JavaScript (DOB إلى السنوات والأشهر والأيام)

إذا كنت تريد حساب عمر شخص ما من تاريخ الميلاد (DOB) في JavaScript، فيمكنك القيام بذلك بعدة طرق مختلفة. المفتاح هو تحديد ما تعنيه بـ العمر:

  • العمر بالسنوات الكاملة (الأكثر شيوعًا)
  • العمر المحدد (سنوات، أشهر، أيام)
  • العمر اعتبارًا من تاريخ محدد (ليس اليوم دائمًا)

1) حساب العمر بالسنوات الكاملة (بسيط وصحيح)

هذا هو النهج القياسي: اطرح السنوات واعدل إذا لم يحدث عيد الميلاد هذا العام بعد.

الدالة ageInYears(dob, asOf = new Date()) {
  ولادة ثابتة = تاريخ جديد (dob)؛
  const ref = new Date(asOf);

  دع سنوات = ref.getFullYear() -birth.getFullYear();
  const m = ref.getMonth() -birth.getMonth();

  إذا (م < 0 || (م === 0 && ref.getDate() 

مثال: تاريخ الميلاد 10-02-0000 واعتبارًا من 09-02-2026 يعطي 25 (عيد الميلاد غدًا).

2) حساب العمر الدقيق (السنوات، الأشهر، الأيام)

إذا كنت تريد تحليلاً دقيقًا، يمكنك حساب السنوات أولاً، ثم الأشهر، ثم الأيام عن طريق "الاقتراض" من الشهر السابق عند الحاجة.

الدالة بالضبطAge(dob, asOf = new Date()) {
  ولادة ثابتة = تاريخ جديد (dob)؛
  const ref = new Date(asOf);

  دع سنوات = ref.getFullYear() -birth.getFullYear();
  دع الأشهر = ref.getMonth() -birth.getMonth();
  دع الأيام = ref.getDate() -birth.getDate();

  // اضبط الأيام عن طريق الاقتراض من الشهر السابق
  إذا (أيام <0) {
    const prevMonth = new Date(ref.getFullYear(), ref.getMonth(), 0); // اليوم 0 = اليوم الأخير من الشهر السابق
    أيام += prevMonth.getDate();
    شهور--؛
  }

  // ضبط الأشهر عن طريق الاقتراض من العام السابق
  إذا (أشهر <0) {
    أشهر += 12؛
    سنين--؛
  }

  العودة {سنوات، أشهر، أيام}؛
}

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

3) استخدم تاريخ "اعتبارًا من" للعمر في تاريخ ماضي أو مستقبلي

تحتاج العديد من التطبيقات إلى عمر محدد في تاريخ مرجعي محدد (التأمين، قواعد الأهلية، آخر موعد للسنة الدراسية). تقبل كلتا الدالتين أعلاه معلمة asOf، لذا يمكنك القيام بما يلي:

ageInYears('1995-06-20', '2030-01-01');
بالضبط ('1995-06-20'، '2030-01-01')؛

المزالق الشائعة (وكيفية تجنبها)

  • المناطق الزمنية: يمكن أن يتصرف التحليل YYYY-MM-DD بشكل مختلف عبر البيئات. إذا كنت تهتم بالتاريخ فقط، فقم بإنشاء التاريخ بالتوقيت المحلي: new Date(year,monthIndex, day).
  • أعياد ميلاد الأيام الكبيسة: حدد القاعدة ليوم 29 فبراير في السنوات غير الكبيسة (28 فبراير أو 1 مارس). كن متسقًا.
  • مدخلات غير صالحة: تتحقق من أن تاريخ الميلاد هو تاريخ حقيقي وليس في المستقبل.

خيار سريع: استخدام حاسبة العمر عبر الإنترنت

إذا كنتفقط تحتاج إلى الإجابة (أو تريد التحقق من صحة التنفيذ)، استخدم الآلة الحاسبة المجانية لدينا: احسب العمر عبر الإنترنت.

أدلة ذات صلة

الأسئلة الشائعة

ما هي الطريقة الأكثر دقة لحساب العمر؟

في معظم الحالات، "السنوات الكاملة" (العمر بالسنوات الكاملة) هي المعيار. إذا كنت بحاجة إلى تحليل كامل، فاحسب السنوات أولاً، ثم الأشهر، ثم الأيام، واختبر حالات الحافة مثل طول الشهر والسنوات الكبيسة.

لماذا تعطي JavaScript أحيانًا يومًا خاطئًا لسلسلة تاريخ؟

لأن new Date('YYYY-MM-DD') يمكن تفسيره على أنه UTC في بعض البيئات. إذا كنت تهتم بتاريخ التقويم المحلي، فقم بتحليل الأجزاء واستخدم new Date(y, m, d).