【发布时间】:2017-05-14 05:44:33
【问题描述】:
我有一个日期时间列表,并希望使用以下代码将其转换为日期:
dates = (datetime.strptime(ts, '%Y-%m-%d %H:%M:%S') for ts in timestamps)
date_strings = [datetime.strftime(d, '%m-%d-%Y') for d in dates]
日期时间列表如下所示:
[datetime.datetime(2016, 11, 21, 0, 0), datetime.datetime(2016, 11, 22, 0, 0), datetime.datetime(2016, 11, 23, 0, 0)]
我收到以下错误消息:
TypeError: strptime() 参数 1 必须是 str,而不是 datetime.datetime
【问题讨论】:
-
timestamps已经是datetime对象的列表;或者更准确地说,该列表中的至少一个对象是datetime对象。你不能使用datetime.strptime()(注意那里的p)将它们解析为datetime对象再次。 -
您的
for d in dates列表理解不必要地使用了未绑定的datetime.strftime()方法;只需直接在datetime实例上调用该方法即可。