我有两个具有相同日期、月份和年份的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
当应该是True
时,我得到了False
。如何进行正确的比较?
您当前正在比较整个datetime
对象,包括时间(不匹配)。相反,只需比较date
部分:
>>> now_date.date() == test_date.date()
True
由于您只想比较日期而不是时间,因此需要将它们转换为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
如果你只想比较日、月和年,你可以试试:
now_date.strftime('%Y%m%d')==test_date.strftime('%Y%m%d')
使用此方法,还可以指定其他属性。
简单函数
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