3.14 计算当前月份的日期范围

    在这样的日期上循环并需要事先构造一个包含所有日期的列表。你可以先计算出开始日期和结束日期,然后在你步进的时候使用 对象递增这个日期变量即可。

    下面是一个接受任意 datetime 对象并返回一个由当前月份开始日和下个月开始日组成的元组对象。

    有了这个就可以很容易的在返回的日期范围上面做循环操作了:

    然后,使用 calendar.monthrange() 函数来找出该月的总天数。任何时候只要你想获得日历信息,那么 模块就非常有用了。monthrange() 函数会返回包含星期和该月天数的元组。

    一旦该月的天数已知了,那么结束日期就可以通过在开始日期上面加上这个天数获得。有个需要注意的是结束日期并不包含在这个日期范围内(事实上它是下个月的开始日期)。这个和Python的 slicerange 操作行为保持一致,同样也不包含结尾。

    为了在日期范围上循环,要使用到标准的数学和比较操作。比如,可以利用 timedelta 实例来递增日期,小于号<用来检查一个日期是否在结束日期之前。

    下面是使用这个生成器的例子:

    这种实现之所以这么简单,还得归功于Python中的日期和时间能够使用标准的数学和比较操作符来进行运算。

    原文: