我想弄清楚某一年零日(1月1日)的一周中的哪一天.
到目前为止,我已经查看了维基百科页面" 计算星期几 ",但我想知道如果你只是想找到零日,那么是否有最简单的算法.
这是一个简单的单线程.我使用Excel验证了1901-2200的所有年份,使用Python的1582-3000验证了这一点datetime
.
dayOfWeek = (year*365 + trunc((year-1) / 4) - trunc((year-1) / 100) + trunc((year-1) / 400)) % 7
这将给出星期几为0 =星期日,6 =星期六.通过在模7之前或之后添加常量可以很容易地调整此结果.例如,为了匹配Python的约定0 = Monday,在模数之前加6.
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;
}
大多数语言都提供了表示和操作日期的工具......我会依赖它们而不是实现一些(可能是不完整的)算法.