解析两种不同格式的日期时间 - 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 日星期一。
根据商品是否超过一周,日期采用以下格式:
由星期几和时间组成的不到一周:
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 日星期一。