开发者社区> 问答> 正文

计算当前月份的日期范围

你的代码需要在当前月份中循环每一天,想找到一个计算这个日期范围的高效方法。

展开
收起
哦哦喔 2020-04-16 21:17:09 1123 0
1 条回答
写回答
取消 提交回答
  • 在这样的日期上循环并需要事先构造一个包含所有日期的列表。 你可以先计算出开始日期和结束日期, 然后在你步进的时候使用 datetime.timedelta 对象递增这个日期变量即可。
    
    下面是一个接受任意 datetime 对象并返回一个由当前月份开始日和下个月开始日组成的元组对象。
    
    from datetime import datetime, date, timedelta
    import calendar
    
    def get_month_range(start_date=None):
        if start_date is None:
            start_date = date.today().replace(day=1)
        _, days_in_month = calendar.monthrange(start_date.year, start_date.month)
        end_date = start_date + timedelta(days=days_in_month)
        return (start_date, end_date)
    有了这个就可以很容易的在返回的日期范围上面做循环操作了:
    
    >>> a_day = timedelta(days=1)
    >>> first_day, last_day = get_month_range()
    >>> while first_day < last_day:
    ...     print(first_day)
    ...     first_day += a_day
    ...
    2012-08-01
    2012-08-02
    2012-08-03
    2012-08-04
    2012-08-05
    2012-08-06
    2012-08-07
    2012-08-08
    2012-08-09
    #... and so on...
    
    2020-04-16 21:17:23
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载