下面是我的方法
def get_remaining_days_in_financial_month(self, from_day):
current_financial_day = date(from_day.year, from_day.month,
self.financial_day_of_month)
end_financial_month = current_financial_day + relativedelta(months=+1)
delta = relativedelta(end_financial_month, from_day)
remaining_days_in_financial_month = delta.days
return remaining_days_in_financial_month当我调试时,我看到
current_financial_day = 2013-06-01
delta = relativedelta(months=+1)
end_financial_month = 2013-07-01
from_day = 2013-06-01
remaining_days_in_financial_month = 0虽然这个信息是正确的,但我想知道days的天数,因为天数从2月份的28变为6月份的30和8月份的31
我如何才能做到这一点?dateutil库似乎并没有提供一种
谢谢
发布于 2013-06-09 22:18:56
使用datetime.timedelta();只需将两个日期相减:
delta = end_financial_month - from_day
return delta.days发布于 2013-07-23 06:40:19
对于什么是timedelta和relativedelta,似乎存在一些混淆。
timedelta是上下文无关的持续时间。可以把它想象成微秒的数字。当你把一个datetime加到一个timedelta上时,你得到了一个未来的微秒数的datetime,它的定义与不同的月份长度、闰年等无关。
持续时间是context-sensitive持续时间。将“一个月”添加到2月1日。将“一个月”添加到8月1日。您将在每种情况下添加不同的微秒数,因为“一个月”(作为持续时间)根据参考点或上下文具有不同的含义。当涉及到闰年时,添加“一年”也是同样的道理。
添加两个timedelta实例非常有意义,而且定义良好。您只是添加了两个“微秒数”。
添加两个relativedelta实例并不是那么简单,而且在文档中看起来是不允许的。
话虽如此,Martijn的答案当然是正确的。我只是想澄清这两个概念在含义上的区别。
https://stackoverflow.com/questions/17010510
复制相似问题