如何根据unix时间计算星期几

时间:2016-04-03 18:06:53

标签: date math

我知道大多数编程语言都有函数/类来做这件事,但我想知道计算。

所以:我如何从几秒钟的unix时间到一个天数(例如0表示星期日,1表示星期一等)?

提前致谢。顺便说一句:这是我在Stack Overflow上的第一篇文章。

1 个答案:

答案 0 :(得分:7)

与其他日期/时间函数的复杂程度相比,您提出的问题相当容易(例如Zeller's congruence)。

  1. Unix时间定义为1970年1月1日UTC时间00:00(午夜)后经过的秒数。

  2. 您可以查找日历以查找1970-01-01是星期四。一天有24 * 60 * 60 = 86400秒。

  3. 因此,0到86399是星期四,86400到172799是星期五,172800到259199是星期六,等等。这些是86400秒的块,对齐为0。

  4. 假设 T 是您的Unix时间戳。然后楼层( T / 86400)告诉您1970年后的天数 - 01-01。 0 = 1月1日星期四; 1 = 1月2日星期五; 2 = 1月3日星期六;等

  5. 添加4和模7.现在0→4; 1→5; 2→6; 3→0; 4→1; 5→2; 6→3; 7→4; 8→5; 9→6; 10→0;这是你的最终答案。

  6. 总结:星期几=(楼层( T / 86400)+ 4)mod 7。

  7. (这假设你想要以UTC为单位的星期几。如果你想为另一个时区计算它,你需要在 T 首先。)