Python 检查两个datetime对象的多个字段是否相等

Python 检查两个datetime对象的多个字段是否相等,python,datetime,python-datetime,Python,Datetime,Python Datetime,我想确保两个datetime对象具有相同的日期和时间,最长为秒 from datetime import datetime time_a = datetime(2020, 4, 29, 3, 14, 15, 9) time_b = datetime(2020, 4, 29, 3, 14, 15, 10) 我不能只做断言时间a==time\u b,因为它们有不同的微秒 我可以使用多个assert语句执行此操作: assert time_a.year == time_b.year assert

我想确保两个datetime对象具有相同的日期和时间,最长为秒

from datetime import datetime

time_a = datetime(2020, 4, 29, 3, 14, 15, 9)
time_b = datetime(2020, 4, 29, 3, 14, 15, 10)
我不能只做
断言时间a==time\u b
,因为它们有不同的微秒

我可以使用多个assert语句执行此操作:

assert time_a.year == time_b.year
assert time_a.month == time_b.month
assert time_a.day == time_b.day
assert time_a.hour == time_b.hour
assert time_a.minute == time_b.minute
assert time_a.second == time_b.second

但这有点重复。有没有更简洁的方法可以做到这一点?

删除微秒将解决您的问题:

time_a.replace(microsecond=0) == time_b.replace(microsecond=0)

是否删除微秒将解决您的问题:

time_a.replace(microsecond=0) == time_b.replace(microsecond=0)

您可以使用
timedelta
检查时间差是否小于1秒

就是

abs(time_a-time_b) < timedelta(seconds=1)
abs(时间a-b)

当差值的绝对值小于1秒时,这一点是正确的,因此它可以有效地检查最长为1秒的相等性。这样做的好处是在
datetime
对象中保持原始微秒级信息的完整性。

您可以使用
timedelta
检查时间差是否小于1秒

就是

abs(time_a-time_b) < timedelta(seconds=1)
abs(时间a-b)

当差值的绝对值小于1秒时,这一点是正确的,因此它可以有效地检查最长为1秒的相等性。这样做的好处是可以在
datetime
对象中保持原始微秒级信息的完整性。

如我在评论中所述:

from datetime import datetime

time_a = datetime(2020, 4, 29, 3, 14, 15, 9).replace(microsecond=0)
time_b = datetime(2020, 4, 29, 3, 14, 15, 10).replace(microsecond=0)

assert time_a == time_b

正如我在评论中提到的:

from datetime import datetime

time_a = datetime(2020, 4, 29, 3, 14, 15, 9).replace(microsecond=0)
time_b = datetime(2020, 4, 29, 3, 14, 15, 10).replace(microsecond=0)

assert time_a == time_b

Try可能重复:
断言时间a.replace(微秒=0)=时间b.replace(微秒=0)
太好了,谢谢。如果你回答这个问题,我会接受。Try的可能副本:
assert time\u a.replace(微秒=0)==time\u b.replace(微秒=0)
太好了,谢谢。如果你回答这个问题,我会接受的。