使用高斯算法、有序日期和模算术计算日期落在一周中的哪一天



在使用高斯算法计算 1 月 1 日落在一周中的哪一天,以及计算给定日历日期的序数日期后,如何计算后一天的星期几?

例如,高斯算法可以告诉我们,今年1月1日是星期日,一周的第7天。今天是10月22日,序数为295。如何使用此信息来计算今天是星期日?

对于普通年份(= 非闰年),1 月 1 日和 10 月 1 日在一周的同一天:

Jan  31
Feb  28
Mar  31
Apr  30
May  31
Jun  30
Jul  31
Aug  30
Sep  31
Sum 273 = 39 x 7

参见维基百科

10月22日正好比10月1日晚了三周。

我发现的一种方法,我没有广泛测试,但似乎适用于我扔给它的日期,是......

(ordinal day + day of 1st of January - 1) % 7

其中周一 = 1,周二 = 2,...,周六 = 6,周日 = 0。

在问题中提到的示例中:

(295 + 0 - 1) % 7 = 0 (Sunday)

最新更新