Mar*_*som 15
这是一个简单的单线程.我使用Excel验证了1901-2200的所有年份,使用Python的1582-3000验证了这一点datetime.
dayOfWeek = (year*365 + trunc((year-1) / 4) - trunc((year-1) / 100) +
trunc((year-1) / 400)) % 7
Run Code Online (Sandbox Code Playgroud)
这将给出星期几为0 =星期日,6 =星期六.通过在模7之前或之后添加常量可以很容易地调整此结果.例如,为了匹配Python的约定0 = Monday,在模数之前加6.
小智 9
int dayofweek(y, m, d) /* 0 = Sunday */
int y, m, d; /* 1 <= m <= 12, y > 1752 or so */
{
static int t[] = {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4};
y -= m < 3;
return (y + y/4 - y/100 + y/400 + t[m-1] + d) % 7;
}
Run Code Online (Sandbox Code Playgroud)
岁月以28年为一个周期重复。将年份除以 28 并返回相应的星期几(星期几值存储在数组/向量中)。这将是最快且最简单的算法。但对于阅读代码的人来说,这个算法根本就不清楚。您的选择取决于您想要快速、简单还是“明显正确”。
| 归档时间: |
|
| 查看次数: |
38028 次 |
| 最近记录: |