如何在多个时间对象上使用解析器

How to use parser on multiple time objects

我有一个列表:

list = ['2022-06-01', '2022-02-02']

现在正在使用解析器将其转换为 python 日期对象。像这样,

from dateutil import parser

def to_date(value):
    for data in value:
        return parser.parse(data)

上面一个只给出了一个输出,但我需要两次输出并且还需要将其转换为这样的字符串:

From : June 1, 2022 | To: Feb. 28, 2022

解析器可以吗?

您只能从 to_date 函数返回一个值,因为您在第一次循环迭代中退出了该函数。您需要引入一个临时存储解析日期的列表:

from dateutil import parser

def to_date(date_list):
    parsed_date_list = []
    for date in date_list:
        parsed_date_list.append(parser.parse(date))
    return parsed_date_list

date_list = ['2022-06-01', '2022-02-02']
res = to_date(date_list)

或者使用列表推导来让你的代码更简洁:

from dateutil import parser

def to_date(date_list):
    return [parser.parse(date) for date in date_list]

date_list = ['2022-06-01', '2022-02-02']
res = to_date(date_list)

要格式化您的字符串,只需使用 kpie 指出的 strftime 函数 在他的评论中:

# res = to_date(date_list)

date_format = "%b %d, %Y"
print(f"From: {res[0].strftime(date_format)} | To: {res[1].strftime(date_format)}")

不要使用 list 作为变量名。 list 是一种数据结构,因此已被 class list.

您可以使用标准 datetime 库来执行解析。 datetime.datetime.strptime 允许您将日期时间字符串转换为日期时间对象。 datetime.datetime.strftime 允许您将日期时间对象转换为所需的字符串。

dt_from, dt_to = [datetime.datetime.strptime(x, "%Y-%m-%d") for x in dt_list]
dt_str = f"From : {datetime.datetime.strftime('%b %d,%Y', dt_from)} | To: {datetime.datetime.strftime('%b %d,%Y', dt_to)}"]