給定一個字符串(reqDayOf),這是一個星期幾的名字,你如何計算星期幾作爲十進制(然後返回基於日期時間對象的下一個實例)?Python:給定一個星期幾名稱的字符串,如何計算出星期幾爲十進制(及其出現的下一個日期)?
獲取datetime對象的year和iso Week of Year,然後使用帶年份+星期+年份+星期幾名稱的strptime工作,但感覺像是黑客。
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'
我在這裏學到了一些東西。謝謝! – Alex 2013-04-05 14:37:52