Skip to main content
 首页 » 编程设计

python 我的日期转换函数在将 datetime.date 格式转换为 "yyyy-mm-dd"时抛出错误

2025年05月04日18rubylouvre

我有以下格式的日期列表:

# 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']