星期几

当我们想知道一个日期是星期几,如果不使用手机或者日历,可以用下面这种算法。

算法

计算2000年到2099年的日期是星期几:

  1. 获取日期年月日(对应y、m、d),例:2023年8月1日对应y=23, m=8, d=1。(y取年份的最后两位,如果月份是1月或2月,则y再减一年)
  2. 接下来的计算由三部分组成
  • 年的部分:y + y//4y//4表示y除以4后取整,如代入23后,年的部分等于28
  • 月的部分:使用这些数字032503 514624,取其中第m个数字,如第8个数字是1
  • 天数部分:直接用天数,这里是1
  1. 将以上三部分相加后对7取余数,其中0代表星期天。如(28 + 1 + 1) % 7 = 2,得到2023年8月1日是星期二

对于别的年份,只需做一点修改,有两种方法:

  • y改为完整的年份,并将年的部分改为y + y//4 - y//100 + y//400
  • 先将y = 1900代入(y + y//4 - y//100 + y//400) % 7得到1。于是对1900年到1999年的日期,y仍然取年份的最后两位,在原来年的部分上加一年即可:y + y//4 + 1