我有两个版本,两个版本因我无法分辨的原因而无效。
第一版
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
答案 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"