تقنية

replace في بايثون: هل ينقل 29 فبراير إلى 28 تلقائيًا؟

d.replace(year=2025) ترفع ValueError في المثال.
تغيير السنة.

replace تعيد كائن date جديدًا، مع تحديث المعاملات المحددة وإبقاء القيم الأخرى. [1]

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

لا في المثال؛ تغيير السنة وحدها يرفع ValueError. [1]

  • replace تعيد كائن date جديدًا، مع تحديث المعاملات المحددة وإبقاء القيم الأخرى. [1]
  • يجب أن يقع day بين 1 وعدد أيام الشهر والسنة المحددين؛ خلاف ذلك يرفع إنشاء date خطأ ValueError. [1]
  • مثال مؤلف على CPython 3.12.14: d أدناه؛ d.replace(year=2025) ترفع ValueError. [1]
  • d.replace(year=2025,day=28) تعطي 2025-02-28؛ اليوم 28 هنا اختيار صريح. [1]
  • تحكم: date(2025,2,29) ترفع ValueError أيضًا، وdate(2025,2,28) تطابق النتيجة الصريحة؛ يبقى d بتاريخ 2024-02-29. [1]

كائن جديد

replace تعيد كائن date جديدًا، مع تحديث المعاملات المحددة وإبقاء القيم الأخرى. [1]

يوم صالح للشهر

يجب أن يقع day بين 1 وعدد أيام الشهر والسنة المحددين؛ خلاف ذلك يرفع إنشاء date خطأ ValueError. [1]

السنة وحدها

مثال مؤلف على CPython 3.12.14: d أدناه؛ d.replace(year=2025) ترفع ValueError. [1]

from datetime import date d=date(2024,2,29) [1]

تغيير السنة واليوم يعطي 2025-02-28.
تغيير السنة واليوم.

اختيار اليوم والتحكم

d.replace(year=2025,day=28) تعطي 2025-02-28؛ اليوم 28 هنا اختيار صريح. [1]

d.replace(year=2025,day=28) -> 2025-02-28 [1]

تحكم: date(2025,2,29) ترفع ValueError أيضًا، وdate(2025,2,28) تطابق النتيجة الصريحة؛ يبقى d بتاريخ 2024-02-29. [1]

المراجع

  1. Python — date replacement

للتوسع: لغات البرمجة.

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