我有以下格式的日期列表:
# List of dates
List_of_Dates = [datetime.date(2019, 6, 3), datetime.date(2019, 6, 4), datetime.date(2019, 6, 5), datetime.date(2019, 6, 6), datetime.date(2019, 6, 7), datetime.date(2019, 6, 10), datetime.date(2019, 6, 11), datetime.date(2019, 6, 12)]
然后我定义了一个日期转换函数:
# define a function for date conversion
def Date_Converter(Date):
import datetime
Date2 = datetime.datetime.strptime(Date,"%Y-%m-%d").date()
return(Date2)
但是当我通过以下方式将上面的日期列表传递给上面的函数时:
# return the list of converted dates
Date_Converter(List_of_Dates)
我也试过:
[Date_Converter(x) for x in List_of_Dates]
但是在这两种情况下,我都得到了一个错误:
----> 5 Date2 = datetime.datetime.strptime(Date,"%Y-%m-%d").date()
6 return(Date2)
TypeError: strptime() argument 1 must be str, not list
而我期待的是以下列表:
["2019-06-03", "2019-06-04", "2019-06-05", "2019-06-06", "2019-06-07", "2019-06-10", "2019-06-11", "2019-06-12"]
请您参考如下方法:
您的代码有很多问题,让我们一一解决。
导入
import datetime 或 from datetime import date 在一个模块中。选择一个并坚持下去,否则会造成困惑。
创建新日期
datetime.date(2019, 6, 3) 错误,请改用datetime(2019, 6, 3)。
更新:我假设您使用的是 datetime.datetime.date(),它无法工作,但 datetime.date.date() 可以工作。同样,使用有意义的导入可以防止这种情况。
尝试解析一个日期时间对象
您想要使用 strftime(将日期时间转换为字符串),而不是 strptime(用于将字符串解析为 日期时间)。
有一个需要单个变量并向其传递变量列表的函数
显然不能工作。除非您以可以同时处理单个变量和列表的方式编写函数。
固定代码如下:
from datetime import date
List_of_Dates = [date(2019, 6, 3), date(2019, 6, 4), date(2019, 6, 5)]
def Date_Converter(Date):
return date.strftime(Date,"%Y-%m-%d")
new_list = [Date_Converter(d) for d in List_of_Dates]
print(new_list)
输出:
['2019-06-03', '2019-06-04', '2019-06-05']
