使用modulo运算符(%)和unix epoch时间戳是否安全?

时间:2016-12-03 13:28:54

标签: unix-timestamp modulo epoch milliseconds

由于24小时有86400000毫秒,所以可以安全地致电:

timestamp % 86400000

在特定日期间通过毫秒? timestamp是以毫秒表示的unix时期,例如1480771537000

我想知道这是否是一种安全的技术,因为闰秒会被添加和减少?以上代码是否总是正确地返回白天的毫秒数,与timestamp是什么无关?

2 个答案:

答案 0 :(得分:1)

是的,您可以使用timestamp % 86400000来判断时间戳是代表午夜/一天的开始(假设时间戳是毫秒,因为Epoch,而不是秒)。

根据this Stack Overflow answer,就Unix时间而言,一天总有86400000毫秒,即使实际上我们有时会添加leap seconds,所以有些日子会延长一秒。

答案 1 :(得分:0)

纪元时间是格林尼治标准时间。您需要一个包含时区的时间戳。我使用下面的代码:

time_t t = time(NULL);

t = timegm(localtime(&t));

if(t %  86400 == 0) {

}