计算给定日期为星期几,可以根据基姆拉尔森公式求取结果

编写函数计算某天为星期几
计算给定日期为星期几,可以根据基姆拉尔森公式求取结果

img

img

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

img

这是我的思路,比较菜,您可以借鉴一下:

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函数,并提供年份、月份和日期作为参数,以计算给定日期是星期几。

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7792359
  • 你也可以参考下这篇文章:【统计学笔记】各种假设检验的假设的建立和各统计量公式总结
  • 除此之外, 这篇博客: 【时间序列分析】序列趋势分析公式总结中的 对序列修匀 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 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α)xt1+α(1α)2xt2+...
    x~t=αxt+(1−α)x~t−1 \widetilde x_t=\alpha x_t+(1-\alpha)\widetilde x_{t-1} xt=αxt+(1α)xt1
    平滑系数0<α<10 < \alpha < 10<α<1

    指定x~0=x1\widetilde x_0=x_1x0=x1

  • 您还可以看一下 包仔神探老师的公交查询系统课程中的 公交查询系统的换乘算法及分页实现小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    可以使用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,表示2021911日是星期六
    

    基姆拉尔森公式的具体含义可以参考百度百科: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。