将模运算符 (%) 与 unix 纪元时间戳一起使用是否安全?



由于 24 小时有 86400000 毫秒,因此可以安全地调用:

timestamp % 86400000

在特定日期获得毫秒传递?timestamp是以毫秒表示的 unix 纪元,例如1480771537000

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

是的,您可以使用timestamp % 86400000来判断时间戳是否表示一天的午夜/开始(假设时间戳是自大纪元以来的毫秒数,而不是秒)。

根据这个 Stack Overflow 答案,就 Unix 时间而言,一天中总是有 86400000 毫秒,即使实际上我们有时会添加闰秒,以便有些日子长一秒。

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

time_t t = time(NULL);
t = timegm(localtime(&t));
if(t %  86400 == 0) {
}

最新更新