Math 获得一周中的某一天

Math 获得一周中的某一天,math,calendar,gregorian-calendar,Math,Calendar,Gregorian Calendar,任务:需要从公历的开始日期获取星期几(可以是2009、935、2342 BP,也可以是时间轴上的任何日期) 到处都找不到数学模型。 也许以前有人遇到过这个问题 p.S.实施语言不重要如果1月和2月被视为前一年的最后两个月,则工作日与3月初的不同为⌊(13m-1)/5)⌋ 天;调整闰年和闰世纪以计算星期几: function weekday(ccyy, mm, dd) # zeller's congruence days := ["Sun", "Mon", "Tues", "Wednes"

任务:需要从公历的开始日期获取星期几(可以是2009、935、2342 BP,也可以是时间轴上的任何日期)

到处都找不到数学模型。 也许以前有人遇到过这个问题


p.S.实施语言不重要

如果1月和2月被视为前一年的最后两个月,则工作日与3月初的不同为⌊(13m-1)/5)⌋ 天;调整闰年和闰世纪以计算星期几:

function weekday(ccyy, mm, dd) # zeller's congruence
    days := ["Sun", "Mon", "Tues", "Wednes", "Thurs", "Fri", "Satur"]
    if mm < 3 then mm, ccyy := mm + 10, ccyy - 1 else mm := mm - 2
    cc, yy := ccyy // 100, ccyy % 100
    day := (dd + (13 * mm - 1) // 5 + yy + yy // 4 + cc // 4 - 2 * cc) % 7
    return days[day] || "day"
函数工作日(ccyy,mm,dd)#泽勒同余
日期:=[“太阳”、“周一”、“周二”、“周三”、“周四”、“周五”、“周六”]
如果mm<3,则mm,ccyy:=mm+10,ccyy-1,否则mm:=mm-2
cc,yy:=ccyy//100,ccyy%100
日期:=(日+(13*mm-1)//5+yy+yy//4+cc//4-2*cc)%7
返回日[日]| |“日”

对于采用公历之前的日期,这一点略有不同。

重复这个答案,这个答案不是答案,因为它应该是一个注释:我想你正在寻找。对于菩提,请随意发布一个正确的答案;e、 g.解释Zeller的一致性在这里有什么帮助,甚至可以用一个示例实现。然而,仅仅链接到维基百科页面并不是一个足够的答案。我正在寻找一个数学模型,也许可以解释简单的公历和前公历是如何关联的。我发现了泽勒的连贯性,但不明白它是如何运作的。当时发布的一行回答更是无济于事。