星期几
当我们想知道一个日期是星期几,如果不使用手机或者日历,可以用下面这种算法。
算法
计算2000年到2099年的日期是星期几:
- 获取日期年月日(对应y、m、d),例:2023年8月1日对应
y=23, m=8, d=1。(y取年份的最后两位,如果月份是1月或2月,则y再减一年) - 接下来的计算由三部分组成
- 年的部分:
y + y//4,y//4表示y除以4后取整,如代入23后,年的部分等于28 - 月的部分:使用这些数字
032503 514624,取其中第m个数字,如第8个数字是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