仅通过日期比较日期时间对象

1 投票
4 回答
2513 浏览
提问于 2025-04-18 04:14

我有两个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

撰写回答