Unix时间戳星期几模式

时间:2016-06-15 22:41:15

标签: unix-timestamp

如果我拥有的是unix时间戳并且我无法使用任何函数来格式化它(例如星期几或日期),那么通过查看时间戳来推断一周的哪一天是否有任何已知的模式是吗?

例如,可以被150整除的所有时间戳都是星期一

2 个答案:

答案 0 :(得分:2)

假设X是您的Unix时间戳,以小时为单位。公式((X - 96) % (264 - 96)) / 24将返回从零开始的工作日索引,其中0表示星期一,6表示星期日。公式如下:

  • (X - 96) % 168 / 24(如果X是您的时间戳,以小时为单位)
  • (X - 345600) % 604800 / 86400(如果X是您的时间戳,以秒为单位)
  • (X - 345600000) % 604800000 / 86400000(如果X是您的时间戳,以毫秒为单位)

如果我正好试验这个时刻,由Unix时间戳1466710873523 ms定义,我会得到(1466710873523 - 345600000) % 604800000 / 86400000,这是~3.8(意思是星期四)(几乎是星期五):)。请注意,虽然它是星期四的UTC - 在某些时区可能会有所不同,因此对于当地时间,您需要考虑时区偏移。

答案 1 :(得分:0)

根据我自己的观察,格林威治标准时间午夜的时间戳每6天结束一次。顺序如下:000,400,800,200,600,000,400,800,200 ...... 因此,今天(在UCT)开始于1465948 800 并且已经是星期三。 所以我知道明天的开始时间戳将以200等结束。

如果您将从今天(1465948 800 )的天数计算到您想要的日期并除以6, 如果余数为1,则结尾为'200', 2:'600', 3:'000', 4:'400', 5:'800'。

因为一周有7天,如果这个星期三在800结束,下周三将在200结束,接下来的星期三在600等等。

相关问题