给定一个字符串,reqDayOf
这是一个工作日名称,您如何将工作日计算为十进制(然后根据datetime
对象返回它的下一个实例)?
获取datetime
对象的年份和 iso 年份的第几周,然后使用strptime
年份 + 年份中的星期 + 工作日名称,但感觉就像一个 hack。
import datetime
def getDateFromDayOf(dateTimeObj,reqDayOf):
#reqDayOf is one of ['monday','tuesday','wednesday','thursday','friday','saturday','sunday']
#return the next instance of reqDayOf
#after dateTimeObj
#as a datetime object
#Get the WeekOfYear from dateTimeObj and then
#get the date based on Year + WeekOfYear + reqDayOf
(dtoYear,dtoIsoWeek,x)=dateTimeObj.isocalendar()
checkDate= '{}-{}-{}'.format( dtoYear,dtoIsoWeek,reqDayOf)
dateOfDay=datetime.datetime.strptime(checkDate,"%Y-%U-%A")
#return dateOfDay if it's greater than the original date
if dateOfDay > dateTimeObj:
return dateOfDay
else:
#this is needed on Sundays
#add a week
return dateOfDay + datetime.timedelta(days=7)
>>> datetime.datetime.now().strftime('%a %Y %b %d')
'Fri 2013 Apr 05'
>>> getDateFromDayOf(datetime.datetime.now(),'Monday').strftime('%a %Y %b %d')
'Mon 2013 Apr 08'