如何为relativedelta动态选择参数?Python日期计算问题
动态给relativedelta指定参数的实现方法
当然可以实现,核心是利用Python的**字典解包语法,把字符串形式的参数名转换成relativedelta的关键字参数。
修改后的可运行代码如下:
from datetime import datetime from dateutil.relativedelta import relativedelta today = datetime.today() print(today) print(today + relativedelta(months=2)) loop = 1 # 这里可以替换成'months'、'years'等relativedelta支持的参数名 time_unit = 'weeks' for i in range(5): # 用字典存储参数,键为字符串形式的单位名,值为增量数值 delta_kwargs = {time_unit: loop} next_date = today + relativedelta(**delta_kwargs) date_string = next_date.strftime('%Y-%m-%d') print(date_string) loop += 1
关键说明:
- 构造字典
delta_kwargs,将字符串形式的时间单位作为键,增量数值作为对应的值 - 通过
**delta_kwargs将字典解包为relativedelta的关键字参数,以此实现动态指定参数的效果 - 只要
time_unit是relativedelta支持的合法参数名(比如weeks、months、years、days等),就能自动适配对应的时间增量计算
内容的提问来源于stack exchange,提问作者MitchW
相关产品推荐
相关产品推荐

