• 0

كيف أقرّب وقت معين في بايثون؟

لدي كائن datetime يحتوي على وقت معين وأريد تقريبه إلى أقرب 10 دقائق (مثل 00، 10، 20، 30...)، فما الطريقة الصحيحة لفعل ذلك لأنني جربت استخدام دالة round لكنني لم تعمل مع الأعداد المساوية أو أكبر من 56 فهي ترجع 60 بدلا من 00 وإضافة ساعة.

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

توجد عدة طرق في بايثون لفعل ذلك، فإذا أردت العودة إلى أقرب 10 دقائق فيمكنك استخدام دالة timedelta كالتالي:

thetime = thetime - datetime.timedelta(minutes=thetime.minute % 10,
                             seconds=thetime.second,
                             microseconds=thetime.microsecond)

أما لو أردت التقريب لأقرب 10 دقائق فيمكنك استخدام هذه الطريقة التي تعمل مع جملة الشرطية if لتحديد ما إذا كان يجب إضافة 10 دقائق أو لا حسب الدقائق:

discard = datetime.timedelta(minutes=thetime.minute % 10,
                             seconds=thetime.second,
                             microseconds=thetime.microsecond)
thetime -= discard
if discard >= datetime.timedelta(minutes=5):
    thetime += datetime.timedelta(minutes=10)

أو يمكنك ببساطة استخدام هذه الطريقة الأقصر من السابقة:

thetime += datetime.timedelta(minutes=5)
thetime -= datetime.timedelta(minutes=thetime.minute % 10,
                         seconds=thetime.second,
                         microseconds=thetime.microsecond)

توجد طرق أخرى لفعل ذلك لكن هذه الطرق هي الأبسط.

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن