python - 在一年中的每个季度进行迭代
问题描述
我试图在一年中的每个季度进行迭代,这就是我到目前为止所拥有的。
now = datetime.now()
first_day = datetime(year=now.year, month=1, day=1)
print("--",first_day)
hundredDaysLater = first_day - timedelta(days=100)
for dt in rrule.rrule(rrule.MONTHLY, dtstart=first_day, bymonthday=(31, -1), count=6, interval=3):
print(dt.replace(day=1))
print(dt)
输出
-- 2018-01-01 00:00:00
2018-01-01 00:00:00
2018-01-31 00:00:00
2018-04-01 00:00:00
2018-04-30 00:00:00
2018-07-01 00:00:00
2018-07-31 00:00:00
2018-10-01 00:00:00
2018-10-31 00:00:00
2019-01-01 00:00:00
2019-01-31 00:00:00
2019-04-01 00:00:00
现在我基本上需要得到这个输出
2018-01-01, 2018-03-31
2018-04-01, 2018-06-30
2018-07-01, 2018-09-30
2018-10-01, 2018-12-31
但是,我需要倒数,而不是向前数。
解决方案
使用relativedelta
(来自dateutil
包装):
>>> from dateutil.relativedelta import relativedelta
>>> from datetime import date
>>> d = date(2019, 1, 1)
>>> day = relativedelta(days=1)
>>> quarter = relativedelta(months=3)
>>> while True:
... print(d - day)
... print(d - quarter)
... d -= quarter
...
2018-12-31
2018-10-01
2018-09-30
2018-07-01
2018-06-30
2018-04-01
2018-03-31
2018-01-01
2017-12-31
2017-10-01
2017-09-30
2017-07-01
2017-06-30
2017-04-01
2017-03-31
...
推荐阅读
- sql - 加入两个选择查询
- html - github.io 和 css 链接
- python - 大型数据集的 Numpy
- swift - UIScrollView contentOffset 在点击时重置
- javascript - MediaElementJS 播放器 + 重新加载 HLS 流 - 任何解决方案?
- java - 如何将 Java 对象从一个类传递到另一个类
- unity3d - 如何在 Unity 中使用纯 ECS(实体组件系统)添加自定义行为?
- ios - CollectionViewCell 中标签中的数据有时会在重新加载时刷新,有时则不会
- ios - 沿画线放置 UILabel
- react-native - 在子视图中获取 apollo 客户端以手动使用查询