我知道大多数编程语言都有函数/类来做这件事,但我想知道计算。
所以:我如何从几秒钟的unix时间到一个天数(例如0表示星期日,1表示星期一等)?
提前致谢。顺便说一句:这是我在Stack Overflow上的第一篇文章。
答案 0 :(得分:7)
与其他日期/时间函数的复杂程度相比,您提出的问题相当容易(例如Zeller's congruence)。
Unix时间定义为1970年1月1日UTC时间00:00(午夜)后经过的秒数。
您可以查找日历以查找1970-01-01是星期四。一天有24 * 60 * 60 = 86400秒。
因此,0到86399是星期四,86400到172799是星期五,172800到259199是星期六,等等。这些是86400秒的块,对齐为0。
假设 T 是您的Unix时间戳。然后楼层( T / 86400)告诉您1970年后的天数 - 01-01。 0 = 1月1日星期四; 1 = 1月2日星期五; 2 = 1月3日星期六;等
添加4和模7.现在0→4; 1→5; 2→6; 3→0; 4→1; 5→2; 6→3; 7→4; 8→5; 9→6; 10→0;这是你的最终答案。
总结:星期几=(楼层( T / 86400)+ 4)mod 7。
(这假设你想要以UTC为单位的星期几。如果你想为另一个时区计算它,你需要在 T 首先。)