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

Jer*_*ano 3 math date

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

那么:我如何从unix时间到达一天数(例如0表示星期日,1表示星期一等)?

提前致谢.BTW:这是我在Stack Overflow上的第一篇文章.

Nay*_*uki 9

与其他日期/时间函数的复杂程度相比,你问的问题相当容易(例如Zeller的同余).

  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上加上或减去小时和分钟.)