【问题标题】:Comparing datetime.now().date() with a date constant in Python将 datetime.now().date() 与 Python 中的日期常量进行比较
【发布时间】:2015-12-27 09:11:21
【问题描述】:

在 Python 3 中打印 datetime.now().date() 会给出类似 2015-09-29 的结果。 但是,当我想将 datetime.now().date() 与此常量进行比较时,它不起作用。我尝试了以下代码sn-ps

import datetime
if datetime.now().date() == 2015-09-29:
    print('Hello')

这会导致语法错误:无效标记

import datetime
if datetime.now().date() == '2015-09-29':
    print('Hello')

这不会导致错误,但是(在 2015 年 9 月 29 日运行此代码时),它也不会打印 Hello

import datetime
if datetime.now().date() == datetime.date(2015,9,29):
    print('Hello')

这会导致错误:描述符 'date' 需要一个 'datetime.datetime' 对象,但收到了一个 'int'。

谁能帮我解决这个相当简单的问题,好吗?谢谢!

【问题讨论】:

  • datetime.datetime.now()

标签: date datetime python-3.x


【解决方案1】:

你的代码实际上给了我一个不同的错误:

>>> import datetime
>>> if datetime.now().date() == datetime.date(2015,9,29):
...     print("hello")
...
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'now'

now 不是 datetime 模块的方法,它是 datetime.datetime 类的方法。是的,这令人困惑。

>>> import datetime
>>> if datetime.datetime.now().date() == datetime.date(2015,9,29):
...     print('Hello')
...
Hello

或者,我可以收到您所做的错误消息,但前提是我调整 import 语句:

>>> from datetime import datetime
>>> if datetime.now().date() == datetime.date(2015,9,29):
...     print('Hello')
...
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: descriptor 'date' requires a 'datetime.datetime' object but received a 'int'

但是您不能以这种方式创建date 对象,因为您只导入了datetime 类。尝试同时导入。

>>> from datetime import datetime, date
>>> if datetime.now().date() == date(2015,9,29):
...     print('Hello')
...
Hello

【讨论】:

  • 后面的情况可以用date.today()替换datetime.now().date()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-20
  • 2013-07-20
  • 1970-01-01
  • 2020-04-22
  • 1970-01-01
相关资源
最近更新 更多