[英]Compare two dates in python and ignoring microseconds
我将date_added日期时间值插入到不支持datetime(6)的mysql 5.5中,这在运行以下单元测试时导致AssertionError
foo.date_added = timezone.now()
self.assertEquals(only_foo_in_database.date_added, foo.date_added)
这导致
AssertionError: datetime.datetime(2013, 9, 2, 6, 48, 56, tzinfo=<UTC>) != datetime.datetime(2013, 9, 2, 6, 48, 56, 677255, tzinfo=<UTC>)
如何比较忽略微秒的两个日期时间值?
使用datetime.datetime.replace
将microsecond设置为0
:
>>> d = datetime.datetime.now()
>>> d
datetime.datetime(2013, 9, 2, 16, 25, 59, 444433)
>>> d.replace(microsecond=0)
datetime.datetime(2013, 9, 2, 16, 25, 59)
self.assertEquals(only_foo_in_database.date_added.replace(microsecond=0),
foo.date_added.replace(microsecond=0))
备选
d1 = datetime.datetime(2013,9,2,6,48,56)
d2 = datetime.datetime(2013,9,2,6,48,56,677255)
self.assertTrue(abs(d1 - d2) < datetime.timedelta(seconds=1))
您可以在unittest中使用assertAlmostEqual
from django.utils import timezone as tz
self.assertAlmostEqual(
only_foo_in_database.date_added, foo.date_added,
delta=tz.timedelta(seconds=1))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.