是否有相应的dateutil relativedelta(工作日= FR),但对于MONTHS?

时间:2017-04-23 21:01:52

标签: python python-dateutil

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

relativedelta(days=1, weekday=MO)

但是好几个月?

现在,我在文本中提取月份编号,并将其与文档的创建日期(和月份)进行比较。然而,这是漫长而重复的(我必须为将来的时态,现在的时态和过去的时态做到这一点)......

3 个答案:

答案 0 :(得分:2)

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

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

中所述
  

年,月,日,小时,分钟,秒,微秒:

     

绝对信息(论证是单数);添加或减去a       具有绝对信息的relativedelta不执行aritmetic       操作,而是替换中的相应值       原始日期时间,其值为relativedelta。

所有“单数”参数都被处理为“设置我将被添加到/减去此值的事物的这个组件”,而相同参数的复数版本说“将此数字加/减到/来自这个组成部分“。

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

答案 1 :(得分:1)

相当于weekday = MO(或weekday = calendar.MONDAY),1月份为month = 1,2月份为month = 2,依此类推。

答案 2 :(得分:-1)

Python arrow库最优雅地处理这些操作。如果需要继续使用datetime,则可以将日期时间对象转换为箭头对象和副对象,即与其他模块兼容。