我有一个python应用程序,它需要每隔三个月规划一次日期,持续几年。重要的是,这些日期每年精确地出现4次,并且尽可能地出现在每年的同一天,并且日期尽可能地出现在每月的同一天,并且日期尽可能地接近“3个月”(这是一个移动的目标,尤其是闰年)。不幸的是,datetime.timedelta
不支持几个月!
在python中有一种“标准”的计算方法吗???
如果最坏的结果是最坏的,我会用punt让我的应用程序向PostgreSQL询问这样的答案,PostgreSQL对日期计算有很好的内置支持:
# select ('2010-11-29'::date + interval '3 months')::date;
date
------------
2011-02-28
(1 row)
这是一个很好的解决方案 http://www.voidspace.org.uk/python/weblog/arch_d7_2012_02_25.shtml#e1235
编辑 啊标准的方式对不起。。。
然后将每个新年“正常化”到原来的日期(除非2月29日)
如果你在寻找确切的或者“更精确”的日期,你最好去看看dateutil。
快速示例:
现在给
TODAY
加3个月,观察它是否与当天完全匹配(注意relativedelta(months=3)
和relativedelta(month=3)
有不同的行为。确保在这些示例中使用months
。而且在一年的时间里都保持一致。实际上,每三个月,在这一天(必须继续添加,因为出于某种原因,乘以一个
relativedelta
并将其添加到一个datetime.date
对象会抛出一个TypeError
):尽管mVChr建议的解决方案肯定“足够好”,但随着时间的推移,它会略微漂移:
在一年的时间里,月日一直在下滑:
相关问题 更多 >
编程相关推荐