Python 调用datetime.date()时出错

Python 调用datetime.date()时出错,python,date,time,Python,Date,Time,我有两个版本,两个版本都不起作用,原因我不知道 第一版 from datetime import datetime, date d = datetime.date(2011, 01, 01) print(d) 给 File "timeSince.py", line 3 d = datetime.date(2011, 01, 01) ^ SyntaxError: invalid token Traceback (most

我有两个版本,两个版本都不起作用,原因我不知道

第一版

from datetime import datetime, date

d = datetime.date(2011, 01, 01)
print(d)

  File "timeSince.py", line 3
    d = datetime.date(2011, 01, 01)
                             ^
SyntaxError: invalid token
Traceback (most recent call last):
  File "timeSince.py", line 3, in <module>
    d = datetime.date(2011, 1, 1)
TypeError: descriptor 'date' requires a 'datetime.datetime' object but received
a 'int'
第二版

from datetime import datetime, date

d = datetime.date(2011, 1, 1)
print(d)

  File "timeSince.py", line 3
    d = datetime.date(2011, 01, 01)
                             ^
SyntaxError: invalid token
Traceback (most recent call last):
  File "timeSince.py", line 3, in <module>
    d = datetime.date(2011, 1, 1)
TypeError: descriptor 'date' requires a 'datetime.datetime' object but received
a 'int'
回溯(最近一次呼叫最后一次):
文件“timeSince.py”,第3行,在
d=日期时间日期(2011年1月1日)
TypeError:描述符“date”需要“datetime.datetime”对象,但已收到
“int”

运行Python 3.3时,您从datetime导入了日期,因此这将起作用:

>>> d = date(2011, 1, 1)
>>> d
datetime.date(2011, 1, 1)
无需将
datetime
放在前面

从模块导入方法时,您不再使用模块的名称来调用该方法,因为您导入了该特定方法

注意:


第一个实例的语法无效,因为在python中整数的开头不能有0。必须这样使用:
date(2011,1,1)
而不是这样:
date(2011,01,01)
您使用的是带前导
0
数字的整数文本,这在Python 3中是不允许的

在Python 2中,这些值被解释为八进制值:

>>> 017
15
但是,对于那些不是C语言背景的人来说,语法是模糊的,容易混淆,现在只支持带前导
0o
0o123
语法。旧语法是一个语法错误,以防止知道C八进制语法的人产生微妙的错误

两个版本都尝试在没有实例的情况下使用
datetime.date()
方法。您只想使用
date()

>>> from datetime import date, datetime
>>> date(2011, 1, 1)
datetime.date(2011, 1, 1)
>>> datetime
<type 'datetime.datetime'>
>>> datetime.date
<method 'date' of 'datetime.datetime' objects>
>>从日期时间导入日期,日期时间
>>>日期(2011年1月1日)
日期时间。日期(2011年1月1日)
>>>日期时间
>>>datetime.date

两个独立的问题。您不能使用前导的
0
s写入整数(这就是第一个版本失败的原因),并且您已经从
datetime
模块导入了
date
,因此您不应该尝试重新引用它(这就是第二个版本失败的原因)。您的代码应该如下所示:

from datetime import date
d = date(2011, 1, 1)
print(d) # prints "2011-01-01"

您的import语句是错误的(或者至少没有帮助),因此您最终在datetime类(将datetime转换为日期)而不是date类(创建日期)上使用date方法


仍然给出相同的错误。文件“timeSince.py”,第3行d=date(2011,01,01)^SyntaxError:无效标记在python中不能使用以0开头的整数!它不起作用!当您实际使用正确的python语法时,这是有效的!我在帖子中的第二个版本不是。