获取星期几
Get day of week
任务:需要获取公历上的星期几和日期(可以是 2009、935、2、342 BP 和时间轴上的任何日期)。
到处都找不到数学模型。
也许以前有人遇到过这个问题?
P.S。实现语言并不重要
如果一月和二月算上一年的最后两个月,工作日与三月初相差⌊(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"
这对于采用公历之前的日期略有不同。
任务:需要获取公历上的星期几和日期(可以是 2009、935、2、342 BP 和时间轴上的任何日期)。
到处都找不到数学模型。 也许以前有人遇到过这个问题?
P.S。实现语言并不重要
如果一月和二月算上一年的最后两个月,工作日与三月初相差⌊(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"
这对于采用公历之前的日期略有不同。