اذهب إلى المحتوى

السؤال

نشر

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

Recommended Posts

  • 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)

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

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...