仅按日期比较日期时间对象



我有两个具有相同日期、月份和年份的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

相关内容

  • 没有找到相关文章

最新更新