【问题标题】:Is there an equivalent for dateutil relativedelta(weekday=FR) but for MONTHS?dateutil relativedelta(weekday=FR) 但对于 MONTHS 是否有等价物?
【发布时间】:2017-04-23 21:01:51
【问题描述】:

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

relativedelta(days=1, weekday=MO)

但是几个月?

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

【问题讨论】:

    标签: python python-dateutil


    【解决方案1】:

    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中所述:

    年、月、日、时、分、秒、微秒:

    绝对信息(参数是单数);添加或减去一个 具有绝对信息的 relativedelta 不执行算术运算 操作,而是替换相应的值 具有 relativedelta 值的原始日期时间。

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-11-03
          • 2010-09-28
          • 1970-01-01
          • 2021-03-29
          • 2011-01-16
          • 2020-09-20
          • 2011-06-13
          相关资源
          最近更新 更多