解析两种不同格式的日期时间 - Python

Parse datetime when it comes in two different formats - Python

根据商品是否超过一周,日期采用以下格式:

由星期几和时间组成的不到一周:

date1 = "Monday 21:14"

一周多了,正好是日期:

date2 = "5 Apr '21"

我将它们作为字符串读入,需要将它们都解析为一致的时间戳。

我试过的一种方法是:

from dateutil.parser import parse
parse(date1)
# output: datetime.datetime(2021, 4, 23, 22, 18)
parse(date2)
# output: datetime.datetime(2021, 4, 5, 0, 0)

使用 dateutil 包,我可以轻松解析 date2,但它为我提供了 date1 的前瞻性星期五,而不是前一个星期五。

你建议我在不知道会收到哪个日期的情况下如何解析这两个日期?我可以指示解析器取上一个工作日(即上周五)

非常感谢

为解析器设置默认值可能有效。由于您希望 取上一个工作日 以防未定义该月的第几天,因此您可以使用一周前的今天日​​期。

例如:

from datetime import datetime, timedelta
from dateutil import parser

date1 = "Monday 21:14"
date2 = "5 Apr '21"

# reference = date of today one week ago (as datetime object):
ref_date = datetime(*datetime.now().timetuple()[:3]) - timedelta(7)

for d in (date1, date2):
    print(parser.parse(d, default=ref_date))
    
# 2021-04-12 21:14:00
# 2021-04-05 00:00:00

请注意,今天是 2021 年 4 月 19 日星期一,但此代码为您提供的是 之前 2021 年 4 月 12 日星期一。