Python 检查两个datetime对象的多个字段是否相等
我想确保两个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
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)
太好了,谢谢。如果你回答这个问题,我会接受的。