将模运算符 (%) 与 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) {
}
由于 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) {
}