我的Python代碼是如下:不受支持的操作數類型: 'datetime.timedelta' 和 'INT'
if (delta % 24 == 0):
print "ONE DAY "
它給誤差類型錯誤:不支持的操作數類型(一個或多個)爲%: 'datetime.timedelta'和'int'
delta is of type datetime.timedelta
請分享您的輸入,以解決此錯誤。 由於項目需求使用pyton 2.7
我的Python代碼是如下:不受支持的操作數類型: 'datetime.timedelta' 和 'INT'
if (delta % 24 == 0):
print "ONE DAY "
它給誤差類型錯誤:不支持的操作數類型(一個或多個)爲%: 'datetime.timedelta'和'int'
delta is of type datetime.timedelta
請分享您的輸入,以解決此錯誤。 由於項目需求使用pyton 2.7
DateTime
不支持模數,因此您看到的錯誤。
這個Python modulo support for datetime雖然存在。
此外,你可以施放第二個操作數,從而使錯誤消失:
if ((d % timedelta(minutes = 24)) == 0):
print("ONE DAY")
這在Python 3.6.1工作。
編輯:
這不會爲Python 2.7.0,其編輯爲OP的問題的工作。在這種情況下,這可能有所幫助:Manipulating DateTime and TimeDelta objects in python。
似乎是在python 3.6.0爲我工作,但只有當兩個操作數的類型是timedelta –
嗯@ con--,它不適合我Python 3.6.1。感謝您的支持。嗯,這解釋了它,但這是一個*不同的情況,不是嗎? – gsamaras
'>>> datetime.timedelta(seconds = 19)%datetime.timedelta(seconds = 5) datetime.timedelta(0,4)'就是我所得到的。我不認爲這將是一個過多的時間將他的參數投到timedelta –
如何閱讀文檔datetime.timedelta
?或者甚至只是在python shell中測試它:
>>> d = datetime.timedelta(hours=24)
>>> d
datetime.timedelta(1)
>>> dir(d)
['__abs__', '__add__', '__class__', '__delattr__', '__div__', '__doc__', '__eq__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__mul__', '__ne__', '__neg__', '__new__', '__nonzero__', '__pos__', '__radd__', '__rdiv__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rmul__', '__rsub__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', 'days', 'max', 'microseconds', 'min', 'resolution', 'seconds', 'total_seconds']
>>> d.days
1
>>> d = datetime.timedelta(hours=8)
>>> d.days
0
正如你所看到的,你已經掌握了這些信息。
請注意,如果您需要根據小時(而不是幾天)其他計算,您需要使用delta.seconds/(60 * 60)
- 因爲某些原因我不明白,從來沒有人把添加hours
或minutes
屬性timedelta
的照顧。 ..
你認爲'delta%24'做什麼?很明顯DateTimes不支持用整數模數。 – Carcigenicate
是不是錯誤消息你需要的所有解釋? –
@Carcigenicate我發現有一天結束使用模運算符 – Zaks