تقنية

date في بايثون: لماذا تغير ساعة سالبة التاريخ؟

إضافة 23 ساعة تعطي 2026-10-11 في المثال.
ساعات موجبة.

إضافة timedelta إلى date تستخدم days وتتجاهل seconds وmicroseconds. [1]

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

لأن ساعة سالبة تُطبّع إلى days=-1 وباقي ثوانٍ موجب. [1]

  • إضافة timedelta إلى date تستخدم days وتتجاهل seconds وmicroseconds. [1]
  • تُحوّل الساعة إلى 3600 ثانية؛ مكوّن seconds المطبّع غير سالب وأقل من 86400. [1]
  • مثال مؤلف على CPython 3.12.14: d أدناه؛ d+timedelta(hours=23) يعطي 2026-10-11 لأن days=0. [1]
  • d+timedelta(hours=-1) يعطي 2026-10-10؛ هنا days=-1 وseconds=82800. [1]
  • تحكم: 23*3600=82800=0*86400+82800؛ -3600=-1*86400+82800؛ جمع 0 أو -1 مع يوم 11 يطابق الناتجين، ويبقى d كما كان. [1]

مكوّن الأيام

إضافة timedelta إلى date تستخدم days وتتجاهل seconds وmicroseconds. [1]

تطبيع الثواني

تُحوّل الساعة إلى 3600 ثانية؛ مكوّن seconds المطبّع غير سالب وأقل من 86400. [1]

ساعات موجبة دون يوم

مثال مؤلف على CPython 3.12.14: d أدناه؛ d+timedelta(hours=23) يعطي 2026-10-11 لأن days=0. [1]

from datetime import date, timedelta d=date(2026,10,11) [1]

إضافة ساعة سالبة تعطي 2026-10-10.
ساعة سالبة.

ساعة سالبة والتحكم

d+timedelta(hours=-1) يعطي 2026-10-10؛ هنا days=-1 وseconds=82800. [1]

d+timedelta(hours=-1) -> 2026-10-10 [1]

تحكم: 23*3600=82800=0*86400+82800؛ -3600=-1*86400+82800؛ جمع 0 أو -1 مع يوم 11 يطابق الناتجين، ويبقى d كما كان. [1]

المراجع

  1. Python — date addition

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

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