仅通过日期比较日期时间对象
我有两个datetime
对象,它们的日期、月份和年份都是一样的,比如:
test_date = datetime.datetime(2014, 4, 25, 11, 57, 56)
(上面的日期是通过datetime.utcfromtimestamp(utc_timestamp)
创建的)和
now_date = datetime.datetime(2014, 4, 25, 12, 40, 19, 705355)
(上面的日期是通过datetime.now()
创建的)。当我说
now_date==test_date
我得到的结果是False
,而实际上应该是True
。我该怎么正确比较呢?
4 个回答
0
简单的函数
def date_extracter(string):
day = re.search('\d{4}-\d{2}-\d{2}', string)
date = datetime.datetime.strptime(day.group(), '%Y-%m-%d').date()
return date
1
如果你只是想比较日期中的天、月和年,可以试试下面的方法:
now_date.strftime('%Y%m%d')==test_date.strftime('%Y%m%d')
用这个方法,你还可以指定其他的属性。
2
因为你只是想比较日期,而不是时间,所以你需要把这些转换成 datetime.date
对象,这样就会去掉和时间相关的信息。
In [1]: import datetime
In [2]: test_date = datetime.datetime(2014, 4, 25, 11, 57, 56)
In [3]: now_date = datetime.datetime(2014, 4, 25, 12, 40, 19, 705355)
In [4]: now_date == test_date
Out[4]: False
In [5]: test_date = test_date.date()
In [6]: test_date
Out[6]: datetime.date(2014, 4, 25)
In [7]: now_date = now_date.date()
In [8]: now_date
Out[8]: datetime.date(2014, 4, 25)
In [9]: now_date == test_date
Out[9]: True
3
你现在是在比较整个 datetime
对象,包括时间部分(这部分不匹配)。其实,你只需要比较 date
部分就可以了:
>>> now_date.date() == test_date.date()
True