簡體   English   中英

%不支持的操作數類型:“ datetime.timedelta”和“ int”

[英]unsupported operand type(s) for %: 'datetime.timedelta' and 'int'

我的python代碼如下:

if ( delta % 24 == 0):
    print "ONE DAY "

它給出錯誤為TypeError:%不支持的操作數類型:“ datetime.timedelta”和“ int”

delta is of type datetime.timedelta

請分享您的輸入以解決此錯誤。 根據項目要求使用pyton 2.7

DateTime不支持取模,因此會看到錯誤。

不過,這種對日期時間的Python模支持


此外,您可以強制轉換第二個操作數,以便消除錯誤:

if ( ( d % timedelta(minutes = 24) ) == 0):
     print("ONE DAY")

在Python 3.6.1中有效。

編輯:

這不適用於Python 2.7.0,已針對OP的問題進行了編輯。 在這種情況下,這可能會有所幫助: 在python中操作DateTime和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) -出於某些原因,我不明白沒有人會考慮添加hoursminutes timedelta屬性...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM