2012-03-13 78 views
1

例如,如果我輸入年份 - 2012年和第72天,則應返回星期二。以下代碼將返回本週的適當日期,但需要將月份作爲輸入。我怎麼能沒有月份參數,因爲我不需要用戶鍵入一個月?如何計算一週中的某一天提供的年份和日期?

days = {0:'Monday', 1:'Tuesday', 2:'Wednesday', 3:'Thursday', 4:'Friday', 5:'Saturday', 6:'Sunday'} 

userdate = date(year, month, day) 
weekday = userdate.weekday() 

return days[weekday] 

回答

4

OR:

from datetime import datetime, timedelta 

startDate = datetime(your_year, 1, 1) 
endDate = (startDate + timedelta(days=days_from_the_begining)).weekday() 

E.g:

from datetime import datetime, timedelta 

def get_weekday(year, dayOfTheYear): 
    days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] 

    userWeekDay = (datetime(year, 1, 1) + timedelta(days=dayOfTheYear)).weekday() 
    return days[userWeekDay] 
+0

謝謝我現在明白如何去做。 – 2012-03-13 05:07:48

+0

不用客氣 – 2012-03-13 06:24:06

+0

當列表出現時,使用字典似乎有些尷尬。我知道你從問題中複製了這一點,但仍然... – 2012-03-13 16:46:50

2

你可以使用datetime.datetime.strptime

from datetime import datetime 
weekday = datetime.strptime('%d %d' % (year, day_of_year), '%Y %j').weekday() 
3

這裏是一個可以適用於任何語言版本。的分歧需要是整數,我使用//,以確保該工程在Python 3

def day_of_week(year, day, one_based=false): 
    days = ('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday') 
    weekday = (year*365 + (year-1)//4 - (year-1)//100 + (year-1)//400 + day + (5 if one_based else 6)) % 7 
    return days[weekday] 

>>> day_of_week(2012, 72) 
'Tuesday' 

,保存着將在今年通過不同的值佔閏年規則的奇數部分。一年是閏年,可以被4整除,除非它可以被100除盡,不可以被除盡400.因此2000年是閏年,但是1900年並不是。

+1

你確定這是對的?週日說,使用這個並輸入(2014,60)於2014年3月1日。但它應該是星期六。 – slashdottir 2014-03-01 00:06:19

+1

@slashdottir,這個問題沒有說明,但是這一天是從零開始的。 2014年3月1日是第59天,而不是60天。 – 2014-03-01 03:27:57

+0

我明白了。約定在60,但基於零也是有意義的。謝謝 – slashdottir 2014-03-01 14:13:43

相關問題