快速根据日期判断星期

基姆拉尔森公式 (Kim Larsen Formula)

  • 原理:O(1) 数学公式直接计算。
  • 默认基准:公元1年1月1日为星期一。
  • 核心调整1月和2月视作上一年的13月和14月 (m+=12; y--;)。
  • 代码公式
    // 0=周一, 1=周二 ... 6=周日
    int w = (d + 2*m + 3*(m+1)/5 + y + y/4 - y/100 + y/400) % 7;
    return w + 1; // 转为 1-7
    
  • 记忆点
    • 包含闰年判断逻辑 (y/4 - y/100 + y/400)。
    • 月份项是 2*m + 3*(m+1)/5
posted @ 2025-12-15 11:23  Sunstreamy  阅读(1)  评论(0)    收藏  举报