编写一个函数[day]=weekday(M, D, Y)
,它告诉你一周中的第几天是M/D/Y。告诉你的用户接受的日期范围是什么。请勿使用任何特定于日历的模块或功能。在
我找到了这两段代码,但我不明白它们背后的逻辑。更具体地说,我不知道偏移量是从哪里来的。在
def weekday(M,D,Y):
offset = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]
week = ['Sunday',
'Monday',
'Tuesday',
'Wednesday',
'Thursday',
'Friday',
'Saturday']
afterFeb = 1
if M > 2: afterFeb = 0
aux = Y - 1700 - afterFeb
# dayOfWeek for 1700/1/1 = 5, Friday
dayOfWeek = 5
# partial sum of days betweem current date and 1700/1/1
dayOfWeek += (aux + afterFeb) * 365
# leap year correction
dayOfWeek += aux / 4 - aux / 100 + (aux + 100) / 400
# sum monthly and day offsets
dayOfWeek += offset[M - 1] + (D - 1)
dayOfWeek %= 7
return dayOfWeek, week[dayOfWeek]
def weekday(m, d, y):
# following numbers in the array are suggested by Sakamoto, Lachman,
Keith and Craver
# one for each month
# and the remaining logic as well
t = [0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4]
y = y - (m<3)
day = (y + y/4 - y/100 + y/400 + t[m-1] + d)%7;
# from 0 to 6, weekdays
if day == 0:
print "Sunday"
elif day == 1:
print "Monday"
elif day == 2:
print "Tuesday"
elif day == 3:
print "Wednesday"
elif day == 4:
print "Thursday"
elif day == 5:
print "Friday"
elif day == 6:
print "Saturday"
把1月1日定为1月1日星期五。它计算年、月、日的差额。这些补偿是月份的累计数字。对简来说,你不需要加任何数字。仅添加0。对于二月,一个人必须增加一月份的31天,对于三月,一个人增加了一月份的31天和二月的28天(总共59天)。等等
相关问题 更多 >
编程相关推荐