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

Is it safe to use modulo operator (%) with unix epoch timestamp?

由于 24 小时有 86400000 毫秒,因此调用是安全的:

timestamp % 86400000

获取特定日期的毫秒数? timestamp 是以毫秒表示的 unix 纪元,例如 1480771537000.

我想知道这是否是一种安全的技术,因为闰秒时不时地被添加和减去?上面的代码是否总是 return 正确显示白天的毫秒数,而与 timestamp 无关?

是的,你可以使用timestamp % 86400000来判断时间戳是否代表一天的midnight/beginning(假设时间戳是从Epoch开始的毫秒,并且不是秒)。

根据this Stack Overflow answer there are always 86400000 milliseconds in a day as far as Unix time is concerned, even though in reality we sometimes add leap seconds所以有些日子会长一秒。

纪元时间是 GMT 时间。您需要一个包含您所在时区的时间戳。为此,我正在使用以下代码:

time_t t = time(NULL);

t = timegm(localtime(&t));

if(t %  86400 == 0) {

}