简单分析Tomohiko Sakamoto的dayofweek代码 您所在的位置:网站首页 Sakamoto 简单分析Tomohiko Sakamoto的dayofweek代码

简单分析Tomohiko Sakamoto的dayofweek代码

2023-09-14 06:00| 来源: 网络整理| 查看: 265

[C FAQ]20.27 由一个日期, 怎样知道是星期几?

用mktime() 或localtime() (参见问题13.11 和13.12, 如果tm hour 的值位0,要注意DST (夏时制) 的调整); 或者Zeller 的congruence (参阅sci.math FAQ); 或者这个由Tomohiko Sakamoto 提供的优雅的代码:

int dayofweek(int y, int m, int d) /* 0 = Sunday */ { 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; }

参见问题13.12 和20.28。 参考资料: [ISO, Sec. 7.12.2.3]。

简单分析:

公元一年一月一日为星期一(现在世界各国通用一星期七天的制度。这个制度最早由君士坦丁大帝[Constantine the Great]制定。他在公元321年3月7日正式宣布7天为1周,这个制度一直沿用至今)。 算今天到公元一年一月一日有多少天,%7,一周7天,周而复始。 每年365天,365=52*7+1,所以,过一年,在算星期的时候,就相当于多了一天。 闰年多一天。过一个闰年,在3月及以后就要多加一


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有