كيفية حساب العمر في بايثون (أمثلة التاريخ والوقت والتاريخ)
تعلم كيفية حساب العمر من تاريخ الميلاد في بايثون. يتضمن السنوات المكتملة والعمر اعتبارًا من تاريخ محدد والمزالق الشائعة مثل السنوات الكبيسة والمناطق الزمنية.
كيفية حساب العمر في بايثون (أمثلة التاريخ والوقت والتاريخ)
إذا كنت بحاجة إلىحساب العمر في بايثونمن تاريخ الميلاد، الشيء الرئيسي الذي يجب الحصول عليه بشكل صحيح هو تعريف العمر: تحتاجه معظم التطبيقاتسنوات اكتملت(أعياد الميلاد الكاملة)، وليس فقط الفرق بين السنوات.
1) السنوات المكتملة (التعريف الآمن)
يُرجع هذا عدد السنوات الكاملة منذ تاريخ الميلاد (DOB). يتم طرح 1 إذا لم يحدث عيد الميلاد بعد في العام الحالي.
from datetime import date
def age_years(dob: date, as_of: date | None = None) -> int:
if as_of is None:
as_of = date.today()
years = as_of.year - dob.year
before_birthday = (as_of.month, as_of.day) < (dob.month, dob.day)
return years - 1 if before_birthday else years
print(age_years(date(2000, 10, 5), date(2026, 2, 26)))
2) العمر اعتبارًا من تاريخ محدد (وليس اليوم فقط)
تحتاج العديد من حالات الاستخدام إلى تاريخ "اعتبارًا من": تسعير التأمين، وفحوصات الأهلية، وانقطاع المدارس، والتقارير. الوظيفة أعلاه تدعمها بالفعل عبرas_of.
3) إخراج النمط الدقيق (السنوات والأشهر)
إذا كنت تريد إخراجًا مثل "25 عامًا و4 أشهر"، فاستخدمهdateutil.relativedelta(يتعامل مع أطوال الشهر بشكل صحيح).
from datetime import date
from dateutil.relativedelta import relativedelta
def age_ym(dob: date, as_of: date | None = None):
if as_of is None:
as_of = date.today()
rd = relativedelta(as_of, dob)
return rd.years, rd.months
print(age_ym(date(2000, 10, 5), date(2026, 2, 26)))
4) المخاطر الشائعة (وكيفية تجنبها)
- أعياد الميلاد يوم كبيسة:قرر كيف تريد التعامل مع يوم 29 فبراير في السنوات غير الكبيسة. تستخدم العديد من الأنظمة 28 فبراير أو 1 مارس. سلوك المكتبة مهم، لذا اختبره.
- أوقات التاريخ والمناطق الزمنية:لDOB، تفضل
dateزيادةdatetime. إذا كان يجب عليك استخدام أوقات التاريخ، فقم بالتطبيع إلى نفس المنطقة الزمنية أولاً. - DOB المستقبلي أو القيم المفقودة:التحقق من صحة المدخلات لتجنب الأعمار السلبية أو الأعطال.
فحص سريع (بدون رمز)
إذا كنت تريد نتيجة واحدة فقط بسرعة، فاستخدم الآلة الحاسبة عبر الإنترنت:حساب العمر اون لاين.
أدلة ذات صلة
التعليمات
لماذا تكون (today.year - dob.year) خاطئة في بعض الأحيان؟
لأنه يتجاهل ما إذا كان عيد الميلاد قد حدث بالفعل هذا العام. يجب عليك طرح 1 قبل عيد الميلاد.
هل يجب علي استخدام التاريخ والوقت أو التاريخ لتاريخ الميلاد؟
يستخدمdateعندما يكون ذلك ممكنا. DOB هو يوم تقويمي، ويمكن للمناطق الزمنية تغيير أوقات التاريخ عبر الأيام.