How to get last Friday?

后端 未结 6 2268
南方客
南方客 2020-12-10 04:20

The code below should return last Friday, 16:00:00. But it returns Friday of previous week. How to fix that?

now = datetime.datetime.now()
test = (now - date         


        
6条回答
  •  感情败类
    2020-12-10 04:47

    As in the linked question, you need to use datetime.date objects instead of datetime.datetime. To get a datetime.datetime in the end, you can use datetime.datetime.combine():

    import datetime
    
    current_time = datetime.datetime.now()
    
    # get friday, one week ago, at 16 o'clock
    last_friday = (current_time.date()
        - datetime.timedelta(days=current_time.weekday())
        + datetime.timedelta(days=4, weeks=-1))
    last_friday_at_16 = datetime.datetime.combine(last_friday, datetime.time(16))
    
    # if today is also friday, and after 16 o'clock, change to the current date
    one_week = datetime.timedelta(weeks=1)
    if current_time - last_friday_at_16 >= one_week:
        last_friday_at_16 += one_week
    

提交回复
热议问题