Python:查找从今天开始两个月开始的日期并从星期一开始

标签 python loops date datetime calendar

所以我是 python 的初学者,并且一直在使用 datetime、time 和 timedelta 库。我正在尝试创建一段代码,从今天(无论今天是什么时候)开始给我大约两个月前的日期(exact_two_months_date)。要注意的是,我想找到大约那个日期。两个月前并在该周的星期一开始实际的 start_date。所以从理论上讲,实际开始日期不会恰好是两个月前。从今天开始就是两个月前的星期一开始的一周。

Example pseudocode:
    today = '20150425' ## '%Y%m%d' ... Saturday
    exact_two_months_date = '20150225' ## EXACTLY two months ago ... Wednesday
    start_date = '20150223' ## this is the Monday of that week two months ago

那么如何找到上面的“开始日期”呢?如果恰好两个月前的那一天是周六或周日开始的,那么我只想去下周一。希望这是清楚且有意义的...一旦找到开始日期,我想每天(仅工作日)增加到“今天”。
感谢任何反馈,谢谢。

最佳答案

使用 python-dateutil
计算日期 如果可以选择依赖第三方包,那么 python-dateutil提供了一种方便的方法来计算日期。

浏览 ☞ relativedelta 的文档查看支持的参数的丰富性。一个包需要对日期进行的计算越多,像 dateutil 这样的辅助模块就越能证明它的依赖性。有关它所提供内容的更多灵感,请参阅 ☞ examples page .

快速浏览:

>>> import datetime
>>> from dateutil.relativedelta import relativedelta

>>> today = datetime.date.today()
>>> two_m_ago = today - relativedelta(months=2)
>>> # print two_m_ago ~> datetime.date(2015, 2, 25)

>>> monday = two_m_ago - datetime.timedelta(days=two_m_ago.weekday())
>>> # print monday ~> datetime.date(2015, 2, 23)

使用 weekday()
获取星期一 一旦我们在变量 two_m_ago 中有了两个月前的日期,我们就从中减去 weekday() 的索引。该索引在星期一为 0,在星期日一直到 6。如果 two_m_ago 已经是星期一,则减去 0 不会导致任何更改。

关于Python:查找从今天开始两个月开始的日期并从星期一开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29867945/

相关文章:

javascript - 单击按钮保存多个图像

excel - 删除重复项的循环仅适用于第一次迭代

bash - Bash 命令日期的 -d 选项格式

javascript - 如何完整获取星期几?

python - Hadoop 返回的结果少于预期

python - 使用 Eclipse PyDev 让 Cython 在 Windows 7 中工作

python - 如何在 OSX High Sierra 中正确设置网状包的 Python 路径?

python - 将 <Return> 绑定(bind)到按钮未按预期工作

loops - 查找包含在文件夹名称中的文本并跳过其

mysql - 在 MYSQL 中将 YYYY-mm-dd 转换为 yyyymmdd