2012-03-13 17 views
1

たとえば、年 - 2012と日72を入力すると、火曜日が返されます。次のコードは、適切な曜日を返しますが、入力として月が必要です。 1か月で入力する必要がないので、私は月の引数なしでこれをどうやって行うことができますか?年と曜日の曜日を計算するにはどうすればよいですか?

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() 

例えば:

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

ありがとう、私は今それを行う方法を理解しています。 –

+0

あなたは歓迎です –

+0

リストが行うときに辞書を使用するのは少し面倒です。私はあなたが質問からそのビットをコピーしたことを知っていますが、まだ... –

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' 

それがうるう年のルールを考慮して異なる値で割る年続け奇数一部を動作することを確認するために//を使用しています、整数である必要があります。 1年は、100で割り切れる場合を除いて、4で割り切れる閏年です。ではなく、は400で割り切れません。したがって、2000年はうるう年でしたが、1900年はそうではありませんでした。

+1

これが正しいと確信していますか?これを使って、2014年3月1日に(2014,60)に入ると、それは日曜日です。しかし、それは土曜日でなければならない。 – slashdottir

+1

@slashdottir、質問には書いていませんが、その日はゼロベースです。 2014年3月1日は60日ではなく59日です。 –

+0

が表示されます。コンベンションでは60歳ですが、ゼロベースも意味があります。 – slashdottir

関連する問題