【问题标题】:Calculating which day of the week a date falls on using Gauss's algorithm, ordinal date and modulo arithmetic使用高斯算法、序数日期和模算术计算日期落在星期几
【发布时间】:2018-04-03 09:11:00
【问题描述】:

使用 Gauss 算法计算出 1 月 1 日是星期几,以及计算给定日历日期的序号日期后,如何计算后一个日期的星期几?

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

【问题讨论】:

    标签: algorithm date calendar date-arithmetic


    【解决方案1】:

    我发现的一种方法是……

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

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

    在问题中提到的示例中:

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

    【讨论】:

      【解决方案2】:

      对于普通年(= 非闰年),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
      

      Wikipedia

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

      【讨论】:

        猜你喜欢
        • 2011-08-13
        • 1970-01-01
        • 2019-07-05
        • 2017-08-23
        • 1970-01-01
        • 1970-01-01
        • 2018-07-14
        • 2015-10-13
        • 1970-01-01
        相关资源
        最近更新 更多