【问题标题】:Get first and last day of given week number in python在python中获取给定周数的第一天和最后一天
【发布时间】:2018-07-05 15:11:10
【问题描述】:

我需要一个函数,它分别返回给定周数(和年份)的第一天和最后一天

在 1 月 1 日不是星期一的情况下,我无法使用标准的 datetime.datetime.strptime()

【问题讨论】:

    标签: python datetime


    【解决方案1】:

    解决办法如下:

    import calendar
    import datetime
    from datetime import timedelta
    
    def get_start_and_end_date_from_calendar_week(year, calendar_week):       
        monday = datetime.datetime.strptime(f'{year}-{calendar_week}-1', "%Y-%W-%w").date()
        return monday, monday + datetime.timedelta(days=6.9)
    

    我扩展了this post的大逻辑。

    更新

    第一个日历周有一个陷阱。某些国家/地区处理第一周数字的方式不同。例如在德国,如果 1 月的第一周少于 4 天,则将其视为前一年的最后一周。在Wikipedia 有一个概述。

    【讨论】:

      【解决方案2】:

      在这里找到的另一个版本完美而简单:https://www.pythonprogramming.in/how-to-get-start-and-end-of-week-data-from-a-given-date.html

      ##
      # Python's program to get start and end of week
      
      from datetime import datetime, timedelta
      
      date_str = '2018-01-14'
      date_obj = datetime.strptime(date_str, '%Y-%m-%d')
      
      start_of_week = date_obj - timedelta(days=date_obj.weekday())  # Monday
      end_of_week = start_of_week + timedelta(days=6)  # Sunday
      print(start_of_week)
      print(end_of_week)
      

      【讨论】:

      • 您的代码中的日历周在哪里?我想你可能误读了这个问题?
      猜你喜欢
      • 2015-06-26
      • 1970-01-01
      • 1970-01-01
      • 2016-07-18
      • 2021-07-21
      • 1970-01-01
      • 1970-01-01
      • 2013-11-22
      • 1970-01-01
      相关资源
      最近更新 更多