datetime TypeError: 'datetime.datetime' object has no attribute '__getitem__'
datetime TypeError: 'datetime.datetime' object has no attribute '__getitem__'
我做错了什么?
import datetime
someday = datetime.datetime(2014, 9, 23, 0, 0)
someday = datetime.datetime.strptime(someday[:10], '%Y-%m-%d')
print someday
错误:
TypeError: 'datetime.datetime' object has no attribute '__getitem__'
someday
是一个datetime
对象,不支持切片。所以,做 someday[:10]
会引发 TypeError
.
您需要先将 someday
转换为字符串,然后再对其进行切片:
someday = datetime.datetime.strptime(str(someday)[:10], '%Y-%m-%d')
演示:
>>> import datetime
>>> someday = datetime.datetime(2014, 9, 23, 0, 0)
>>>
>>> someday # This is a datetime object
datetime.datetime(2014, 9, 23, 0, 0)
>>> someday[:10] # Does not support slicing
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'datetime.datetime' object has no attribute '__getitem__'
>>>
>>> str(someday) # This returns a string
'2014-09-23 00:00:00'
>>> str(someday)[:10] # Supports slicing
'2014-09-23'
>>>
someday
不是字符串,因此您无法通过应用 [:10]
获得子字符串。它是一个 datetime
对象。
要从 datetime
对象中获取日期,只需调用 .date()
方法:
print someday.date()
无需转换即可使用 str()
将 someday
转换为字符串,只需使用 datetime.strptime()
.
立即将其转换回来
我做错了什么?
import datetime
someday = datetime.datetime(2014, 9, 23, 0, 0)
someday = datetime.datetime.strptime(someday[:10], '%Y-%m-%d')
print someday
错误:
TypeError: 'datetime.datetime' object has no attribute '__getitem__'
someday
是一个datetime
对象,不支持切片。所以,做 someday[:10]
会引发 TypeError
.
您需要先将 someday
转换为字符串,然后再对其进行切片:
someday = datetime.datetime.strptime(str(someday)[:10], '%Y-%m-%d')
演示:
>>> import datetime
>>> someday = datetime.datetime(2014, 9, 23, 0, 0)
>>>
>>> someday # This is a datetime object
datetime.datetime(2014, 9, 23, 0, 0)
>>> someday[:10] # Does not support slicing
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'datetime.datetime' object has no attribute '__getitem__'
>>>
>>> str(someday) # This returns a string
'2014-09-23 00:00:00'
>>> str(someday)[:10] # Supports slicing
'2014-09-23'
>>>
someday
不是字符串,因此您无法通过应用 [:10]
获得子字符串。它是一个 datetime
对象。
要从 datetime
对象中获取日期,只需调用 .date()
方法:
print someday.date()
无需转换即可使用 str()
将 someday
转换为字符串,只需使用 datetime.strptime()
.