开发者社区> 问答> 正文

计算最后一个周五的日期

你需要查找星期中某一天最后出现的日期,比如星期五。

展开
收起
哦哦喔 2020-04-16 21:16:07 1135 0
1 条回答
写回答
取消 提交回答
  • Python的 datetime 模块中有工具函数和类可以帮助你执行这样的计算。 下面是对类似这样的问题的一个通用解决方案:
    
    #!/usr/bin/env python
    # -*- encoding: utf-8 -*-
    """
    Topic: 最后的周五
    Desc :
    """
    from datetime import datetime, timedelta
    
    weekdays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday',
                'Friday', 'Saturday', 'Sunday']
    
    
    def get_previous_byday(dayname, start_date=None):
        if start_date is None:
            start_date = datetime.today()
        day_num = start_date.weekday()
        day_num_target = weekdays.index(dayname)
        days_ago = (7 + day_num - day_num_target) % 7
        if days_ago == 0:
            days_ago = 7
        target_date = start_date - timedelta(days=days_ago)
        return target_date
    在交互式解释器中使用如下:
    
    >>> datetime.today() # For reference
    datetime.datetime(2012, 8, 28, 22, 4, 30, 263076)
    >>> get_previous_byday('Monday')
    datetime.datetime(2012, 8, 27, 22, 3, 57, 29045)
    >>> get_previous_byday('Tuesday') # Previous week, not today
    datetime.datetime(2012, 8, 21, 22, 4, 12, 629771)
    >>> get_previous_byday('Friday')
    datetime.datetime(2012, 8, 24, 22, 5, 9, 911393)
    >>>
    可选的 start_date 参数可以由另外一个 datetime 实例来提供。比如:
    
    >>> get_previous_byday('Sunday', datetime(2012, 12, 21))
    datetime.datetime(2012, 12, 16, 0, 0)
    >>>
    
    2020-04-16 21:16:44
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

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