因为您已经在处理 datetime 对象,所以您会收到此错误,因为 strptime 需要一个字符串而不是 Timestamp 对象。来自strptime的定义:
def strptime(cls, date_string, format):
'string, format -> new datetime parsed from a string (like time.strptime()).'
您实际上要做的是首先使用strftime 将您的日期时间转换为您需要的字符串格式:
def strftime(self, format):
"""Return a string representing the date and time, controlled by an
explicit format string.
然后使用strptime 将其带回datetime 对象。下面的演示将演示。请注意在末尾使用.date(),以便删除不需要的00:00:00 时间部分。
>>> from datetime import datetime
>>> orig_datetime_obj = datetime.strptime("2015/10/31", '%Y/%m/%d').date()
>>> print(orig_datetime_obj)
2015-10-31
>>> print(type(orig_datetime_obj))
<type 'datetime.datetime'>
>>> new_datetime_obj = datetime.strptime(orig_datetime_obj.strftime('%d-%m-%y'), '%d-%m-%y').date()
>>> print(new_datetime_obj)
2015-10-31
>>> print(type(new_datetime_obj))
<type 'datetime.date'>
或者,如果您只需要将其转换为不同的格式但在字符串中,您可以简单地坚持仅使用 strftime 和您的新格式。使用我上面的例子,你只需要这部分:
orig_datetime_obj.strftime('%d-%m-%y')