所以我是 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/