在给定日期后找到第一个星期一的日期

97

给定一个特定的日期,例如2011-07-02,我如何找到该日期之后的下一个星期一(或任何工作日)的日期?


2
http://docs.python.org/library/datetime.html#datetime.date.weekday - Juan Gomez
13个回答

0

通常从今天开始,找到任何日期的星期几:


def getDateFromDayOfWeek(dayOfWeek):
    week_days = ["monday", "tuesday", "wednesday",
                 "thursday", "friday", "saturday", "sunday"]
    today = datetime.datetime.today().weekday()
    requiredDay = week_days.index(dayOfWeek)
    if today>requiredDay:
          noOfDays=7-(today-requiredDay)
          print("noDays",noOfDays)
    else:  
          noOfDays = requiredDay-today
          print("noDays",noOfDays)
    requiredDate = datetime.datetime.today()+datetime.timedelta(days=noOfDays)
    return requiredDate

print(getDateFromDayOfWeek('sunday').strftime("%d/%m/%y"))

以日/月/年的格式输出结果


0

这将返回给定日期后的第一个下一个星期一:

import datetime

def get_next_monday(year, month, day):
    date0 = datetime.date(year, month, day)
    next_monday = date0 + datetime.timedelta(7 - date0.weekday() or 7)
    return next_monday

print get_next_monday(2011, 7, 2)
print get_next_monday(2015, 8, 31)
print get_next_monday(2015, 9, 1)

2011年07月04日
2015年09月07日
2015年09月07日


-1

通过列表推导式实现?

from datetime import *
[datetime.today()+timedelta(days=x) for x in range(0,7) if (datetime.today()+timedelta(days=x)).weekday() % 7 == 0]

(0 at the end is for next monday, returns current date when run on monday)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接