dateutil relativedelta(weekday=FR) 是否有等效项但适用于 MONTHS?

Is there an equivalent for dateutil relativedelta(weekday=FR) but for MONTHS?

我想在脚本中解析日期,我想知道是否有等效的:

relativedelta(days=1, weekday=MO)

但是几个月了?

现在,我提取文本中的月份数字并将其与文档的创建日期(和月份)进行比较。然而,这是相当长且重复的(我必须为将来时、现在时和过去时做)...

weekday = MO(或 weekday = calendar.MONDAY)的等价物可以是 month = 1 表示一月,month = 2 表示二月,依此类推。

relativedelta(month=2) 添加到 datetime 对象将为您提供相同的日期和时间,二月除外。如果这创建了一个不存在的日期,该日期将被截断为最后一个存在的日期,例如:

from datetime import datetime
from dateutil.relativedelta import relativedelta

print(datetime(2015, 3, 30) + relativedelta(month=2))   # 2015-02-28 00:00:00

relativedelta documentation 中所述:

year, month, day, hour, minute, second, microsecond:

Absolute information (argument is singular); adding or subtracting a relativedelta with absolute information does not perform an aritmetic operation, but rather REPLACES the corresponding value in the original datetime with the value(s) in relativedelta.

所有 "singular" 参数都被处理为 "set this component of the thing I'm being added to/subtracted from to this value",而相同参数的复数版本表示 "Add/subtract this number to/from this component".

请注意,relativedelta 文档还列出了每个组件的应用顺序,但足以说明绝对值在 之前 应用相对值,因此 relativedelta(month=3, months=2)将月份设置为三月,然后加上 2 个月(所以,基本上,它相当于 relativedelta(month=5))。

这些操作由 Python arrow 库处理得最为优雅。 Datetime 对象可以转换为 Arrow 对象,反之亦然,如果您需要继续使用 datetime,即为了与其他模块兼容。