如何让Python的dateparser模块基于指定日期解析相对日期
指定基准日期使用dateparser解析相对日期
刚好我之前也用dateparser处理过类似需求,其实实现起来超简单,核心就是利用dateparser提供的settings参数,把解析相对日期的基准从默认的系统当前时间换成你指定的日期就行。
下面给你一步步拆解操作:
1. 导入必要模块
先把需要用的datetime和dateparser模块导入进来:
from datetime import datetime import dateparser
2. 定义你的基准日期
比如你想要的2021年1月1日,直接用datetime构造就行:
# 仅日期的基准 base_date = datetime(2021, 1, 1) # 如果要解析带时间的相对表述(比如"3小时前"),可以加上时分秒 base_date_with_time = datetime(2021, 1, 1, 14, 30, 0)
3. 用指定基准解析相对日期
调用dateparser.parse()时,传入settings参数,把RELATIVE_BASE设为你定义的基准日期,就能基于这个日期解析相对表述了:
# 解析"昨天" result_yesterday = dateparser.parse("yesterday", settings={'RELATIVE_BASE': base_date}) print(result_yesterday) # 输出: 2020-12-31 00:00:00 # 解析"明天" result_tomorrow = dateparser.parse("tomorrow", settings={'RELATIVE_BASE': base_date}) print(result_tomorrow) # 输出: 2021-01-02 00:00:00 # 解析"3小时前"(用带时间的基准) result_3h_ago = dateparser.parse("3 hours ago", settings={'RELATIVE_BASE': base_date_with_time}) print(result_3h_ago) # 输出: 2021-01-01 11:30:00
小提醒
如果你的相对日期涉及具体时间维度,记得基准日期最好包含时分秒信息,这样解析出来的时间结果会更准确;另外settings参数还能搭配时区、语言等其他配置,有需要的话可以一并设置。
内容的提问来源于stack exchange,提问作者ferrum




