调用datetime.date()时出错

时间:2013-05-09 18:52:40

标签: 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

第二版

from datetime import datetime, date

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

哪个给出了

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'

运行Python 3.3

4 个答案:

答案 0 :(得分:3)

您从datetime导入日期,因此可以使用:

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

无需放置datetime前面的

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

注意:

您的第一个实例是无效语法,因为您在python中的整数开头不能有0。您必须以这种方式使用它:date(2011, 1, 1)而不是这样:date(2011, 01, 01)

答案 1 :(得分:2)

您正在使用带有0前导数字的整数文字,这在Python 3中是不允许的。

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

>>> 017
15

但是语法含糊不清,并且对那些不是来自C背景的人来说很困惑,现在只支持带有0o123的{​​{1}}语法。旧语法出现语法错误,以防止知道C八进制语法的人创建细微错误。

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

date()

答案 2 :(得分:2)

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

>>> from datetime import datetime, date
>>> datetime.date
<method 'date' of 'datetime.datetime' objects>
>>> datetime.date.__doc__
'Return date object with same year, month and day.'

请改为:

>>> import datetime
>>> datetime.date(2011,1,1)
datetime.date(2011, 1, 1)
>>> datetime.date.__doc__
'date(year, month, day) --> date object'

答案 3 :(得分:0)

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

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