编写函数计算某天为星期几
计算给定日期为星期几,可以根据基姆拉尔森公式求取结果
def calc_weekday_with_date(y: int, m: int, d: int) -> int:
if m == 1 or m == 2:
m += 12
y -= 1
h = (d + 2*m + 3*(m+1)//5 + y + y//4 - y//100 + y//400) % 7
return h + 1
这是我的思路,比较菜,您可以借鉴一下:
def day_of_week(year, month, day):
# 根据基姆拉尔森公式计算星期几
# W = (d + 2m + 3(m+1)/5 + y + y/4 - y/100 + y/400 + 1) % 7
# 公式中的m月份需要转换为从3月开始算起,即3月为1,4月为2,...,12月为10,1月为11,2月为12
if month < 3:
month += 12
year -= 1
d = day
m = month
y = year % 100
c = year // 100
w = (d + 2*m + 3*(m+1)//5 + y + y//4 - y//100 + y//400 + 1 + c//4 - 2*c) % 7
# 根据星期几的值返回相应的字符串
days_of_week = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
return days_of_week[w]
# 测试函数
print(day_of_week(2023, 6, 17)) # 输出:Saturday
在函数中,我首先对月份和年份进行了一些转换,以使计算符合基姆拉尔森公式的要求。然后,我根据公式计算出星期几的值,并使用一个字符串列表将该值转换为相应的星期几名称。最后,返回结果。
你可以调用day_of_week
函数,并提供年份、月份和日期作为参数,以计算给定日期是星期几。
x~t=αxt+α(1−α)xt−1+α(1−α)2xt−2+... \widetilde x_t=\alpha x_t+\alpha(1-\alpha)x_{t-1}+\alpha(1-\alpha)^2x_{t-2}+... xt=αxt+α(1−α)xt−1+α(1−α)2xt−2+...
x~t=αxt+(1−α)x~t−1 \widetilde x_t=\alpha x_t+(1-\alpha)\widetilde x_{t-1} xt=αxt+(1−α)xt−1
平滑系数0<α<10 < \alpha < 10<α<1
指定x~0=x1\widetilde x_0=x_1x0=x1
可以使用Python内置的datetime库来计算某天是星期几,具体代码如下:
import datetime
def get_weekday(year, month, day):
date = datetime.date(year, month, day)
return date.weekday() # 0表示星期一,1表示星期二,以此类推,6表示星期日
weekday = get_weekday(2021, 9, 11)
print(weekday) # 输出5,表示2021年9月11日是星期六
如果要使用基姆拉尔森公式计算日期对应的星期几,可以参考以下代码:
def get_weekday(year, month, day):
if month < 3:
month += 12
year -= 1
c = year // 100
y = year % 100
m = month
d = day
w = (c // 4 - 2 * c + y + y // 4 + 13 * (m + 1) // 5 + d - 1) % 7
return w # 0表示星期日,1表示星期一,以此类推,6表示星期六
weekday = get_weekday(2021, 9, 11)
print(weekday) # 输出6,表示2021年9月11日是星期六
基姆拉尔森公式的具体含义可以参考百度百科:https://baike.baidu.com/item/%E5%9F%BA%E5%A7%86%E6%8B%89%E5%B0%94%E6%A3%AE%E5%85%AC%E5%BC%8F。