当前位置:  开发笔记 > 编程语言 > 正文

找到给定年份第0天的星期几的最简单算法是什么?

如何解决《找到给定年份第0天的星期几的最简单算法是什么?》经验,为你挑选了3个好方法。

我想弄清楚某一年零日(1月1日)的一周中的哪一天.

到目前为止,我已经查看了维基百科页面" 计算星期几 ",但我想知道如果你只是想找到零日,那么是否有最简单的算法.



1> Mark Ransom..:

这是一个简单的单线程.我使用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.



2> 小智..:
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;
}


@jacanterbury:1752年是英国领土(例如现在的美国)从朱利安历法转换为格里高利历法,在此过程中损失了11天(9月3日至13日)。早在1584年(从记忆开始),世界其他地区就发生了变化,直到20世纪(这就是为什么在世界上大多数其他地区,俄罗斯的十月革命于11月发生的原因)之前,世界上的其他地方才发生了变化,并且有很多不同的地方日期之间。您甚至可以发现,由于切换(以及切换过程中的错误),瑞典于1712年2月30日发生了错误。

3> Zach Scriven..:

大多数语言都提供了表示和操作日期的工具......我会依赖它们而不是实现一些(可能是不完整的)算法.


如果用户要求算法,说"使用现有实现"并不是正确的答案.
推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有