关于python:仅按日期比较日期时间对象

Comparing datetime objects by date only

我有两个datetime对象,具有相同的日期、月份和年份,例如:

1
test_date = datetime.datetime(2014, 4, 25, 11, 57, 56)

(上述日期与datetime.utcfromtimestamp(utc_timestamp)一样创建)和

1
now_date  = datetime.datetime(2014, 4, 25, 12, 40, 19, 705355)

(上面的日期和datetime.now()一样创建)。当我说

1
now_date==test_date

我得到了False,当它应该是True的时候。如何正确比较?


您当前正在比较整个datetime对象,包括时间(不匹配)。相反,只需比较date部分:

1
2
>>> now_date.date() == test_date.date()
True


因为,您只想比较日期而不是时间,所以需要将它们转换为datetime.date对象,这些对象去掉了与时间相关的信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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


如果您只想比较日、月和年,可以尝试:

1
now_date.strftime('%Y%m%d')==test_date.strftime('%Y%m%d')

使用此方法,还可以指定其他属性。