尝试将 Zeller 的公式用于 return 一周中的几天,使用 python
Trying to use Zeller’s formula to return days of the week using python
我看到了 java 个代码,但无法将它们与 python 进行完全比较。我正在尝试使用 Zeller 的一致性来查找任何日期的星期几。
泽勒公式假定对于公式中的每个计算,其中有一个
商(或两个数的除法),则使用该计算的整数值。如果月份是一月或二月,则将 12 添加到该月,然后将 1
在计算日之前从年中减去。
day = (((13*m+3) / 5 + d + y + (y / 4) - (y / 100) + (y / 400)) %7)
.
day_names =[('Monday'),'Tuesday','Wednesday','Thursday','Friday','Saturday', 'Sunday']
例如 day_names[0] = 'Monday' 和 day_names[6] = 'Sunday'
下面似乎从来没有给我正确的日期,有没有人能说出我做错了什么,如果不是所有的话?
def day_of_week1(d, m, y):
d=1<=d<=31
m=1<=m<=12
y=1<=y<=10**5
if m in range (1,2):
m=m+12
y=y-1
day_names =[('Monday'),'Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
day =(((13*m+3) / 5 + d + y + (y / 4) - (y / 100) + (y / 400)) %7)
day=(math.ceil(day))
if 2>day>=1:
return day_names[0]
elif 3>day>=2:
return day_names[1]
elif 4>day>=3:
return day_names[2]
elif 5>day>=4:
return day_names[3]
elif 6>day>=5:
return day_names[4]
elif 7>day>=6:
return day_names[5]
elif 8>day>=7:
return day_names[6]
使用 calendar 模块中的日期名称。此外,该月的调整不符合 Zeller 规则。试试这个:
import calendar
def day_of_week(d, m, y):
if m < 3:
y -= 1
m += 10
else:
m -= 2
yc, yd = divmod(y, 100)
r = d + (13 * m - 1) // 5 + yd + yd // 4 + yc // 4 - 2 * yc
return calendar.day_name[r % 7 - 1]
print(day_of_week(9, 11, 1951))
输出:
Friday
我看到了 java 个代码,但无法将它们与 python 进行完全比较。我正在尝试使用 Zeller 的一致性来查找任何日期的星期几。
泽勒公式假定对于公式中的每个计算,其中有一个
商(或两个数的除法),则使用该计算的整数值。如果月份是一月或二月,则将 12 添加到该月,然后将 1
在计算日之前从年中减去。
day = (((13*m+3) / 5 + d + y + (y / 4) - (y / 100) + (y / 400)) %7)
.
day_names =[('Monday'),'Tuesday','Wednesday','Thursday','Friday','Saturday', 'Sunday']
例如 day_names[0] = 'Monday' 和 day_names[6] = 'Sunday'
下面似乎从来没有给我正确的日期,有没有人能说出我做错了什么,如果不是所有的话?
def day_of_week1(d, m, y):
d=1<=d<=31
m=1<=m<=12
y=1<=y<=10**5
if m in range (1,2):
m=m+12
y=y-1
day_names =[('Monday'),'Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
day =(((13*m+3) / 5 + d + y + (y / 4) - (y / 100) + (y / 400)) %7)
day=(math.ceil(day))
if 2>day>=1:
return day_names[0]
elif 3>day>=2:
return day_names[1]
elif 4>day>=3:
return day_names[2]
elif 5>day>=4:
return day_names[3]
elif 6>day>=5:
return day_names[4]
elif 7>day>=6:
return day_names[5]
elif 8>day>=7:
return day_names[6]
使用 calendar 模块中的日期名称。此外,该月的调整不符合 Zeller 规则。试试这个:
import calendar
def day_of_week(d, m, y):
if m < 3:
y -= 1
m += 10
else:
m -= 2
yc, yd = divmod(y, 100)
r = d + (13 * m - 1) // 5 + yd + yd // 4 + yc // 4 - 2 * yc
return calendar.day_name[r % 7 - 1]
print(day_of_week(9, 11, 1951))
输出:
Friday