How can I get the current week using Python?

前端 未结 7 1532
夕颜
夕颜 2020-12-15 22:57

Using Python...

How can I get a list of the days in a specific week?

Something like...

{
\'1\' : [\'01/03/2010\',\'01/04/2010\',\'01/05/2010\         


        
相关标签:
7条回答
  • 2020-12-15 23:24

    Beware! If you want to define YOUR OWN week numbers, you could use the generator expression provided in your first question which, by the way, got an awesome answer). If you want to follow the ISO convention for week numbers, you need to be careful:

    the first calendar week of a year is that one which includes the first Thursday of that year and [...] the last calendar week of a calendar year is the week immediately preceding the first calendar week of the next calendar year.

    So, for instance, January 1st and 2nd in 2010 were NOT week one of 2010, but week 53 of 2009.

    Python offers a module for finding the week number using the ISO calendar:

    Example code:

    h[1] >>> import datetime
    h[1] >>> Jan1st = datetime.date(2010,1,1)
    h[1] >>> Year,WeekNum,DOW = Jan1st.isocalendar() # DOW = day of week
    h[1] >>> print Year,WeekNum,DOW
    2009 53 5
    

    Notice, again, how January 1st 2010 corresponds to week 53 of 2009.

    Using the generator provided in the previous answer:

    from datetime import date, timedelta
    
    
    def allsundays(year):
        """This code was provided in the previous answer! It's not mine!"""
        d = date(year, 1, 1)                    # January 1st                                                          
        d += timedelta(days = 6 - d.weekday())  # First Sunday                                                         
        while d.year == year:
            yield d
            d += timedelta(days = 7)
    
    Dict = {}
    for wn,d in enumerate(allsundays(2010)):
        # This is my only contribution!
        Dict[wn+1] = [(d + timedelta(days=k)).isoformat() for k in range(0,7) ]
    
    print Dict
    

    Dict contains the dictionary you request.

    0 讨论(0)
提交回复
热议问题