将datetime.now().date()与Python中的日期常量进行比较

Ber*_*ans 2 datetime date python-3.x

datetime.now().date()在Python 3中打印提供类似2015-09-29的内容.但是,当我想比较datetime.now().date()这个常量时,它不起作用.我尝试了以下代码片段

import datetime
if datetime.now().date() == 2015-09-29:
    print('Hello')
Run Code Online (Sandbox Code Playgroud)

这会导致语法错误:令牌无效.

import datetime
if datetime.now().date() == '2015-09-29':
    print('Hello')
Run Code Online (Sandbox Code Playgroud)

这将导致没有错误,但(上运行2015年9月29日这段代码时),它不打印您好要么

import datetime
if datetime.now().date() == datetime.date(2015,9,29):
    print('Hello')
Run Code Online (Sandbox Code Playgroud)

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

有人可以帮我解决这个相当简单的问题吗?谢谢!

Kev*_*vin 6

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

>>> 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'
Run Code Online (Sandbox Code Playgroud)

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

>>> import datetime
>>> if datetime.datetime.now().date() == datetime.date(2015,9,29):
...     print('Hello')
...
Hello
Run Code Online (Sandbox Code Playgroud)

或者,我可以收到您所做的错误消息,但只有在我调整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'
Run Code Online (Sandbox Code Playgroud)

但是你不能以date这种方式创建一个对象,因为你只导入了这个datetime类.尝试导入两者.

>>> from datetime import datetime, date
>>> if datetime.now().date() == date(2015,9,29):
...     print('Hello')
...
Hello
Run Code Online (Sandbox Code Playgroud)

  • 在后面的例子中,你可以用`date.today()`替换`datetime.now().date()` (2认同)