使用(UTC Unix时间戳%60)作为UTC秒字段是否安全?

时间:2018-12-07 01:55:39

标签: c unix-timestamp

我有一个嵌入式设备正在与基于Linux的无线网关的Unix时间(time_t)进行粗略的时间同步,该时间设置为UTC。我需要将我的一些动作与挂钟时间保持一致-例如,有一项任务需要在每分钟30秒后执行。我是否需要调用常规的C标准库函数来获取秒字段,还是可以做一些更简单的事情?

int seconds_past_the_minute = (unix_utc_timestamp % 60);

1 个答案:

答案 0 :(得分:1)

应该很安全,但是很丑。

由于Unix时间戳忽略leap秒,并且由于它们从某个日期的午夜开始计数,所以模运算unix_utc_timestamp % 60应该给您第二分钟。一些测试应该验证,如果可以,我会对正确性感到满意。

但是,使用库函数有什么问题?我使用C库的经验可以追溯到2002年,所以我不记得它到底是什么样子,但是您可能会认为它提供了更具可读性和自我解释性的代码。因此,如果没有强烈的反对意见,我会更喜欢它。

(Unix时间戳记的起始日期是1970-01-01。在UTC中。但是,如果是其他任何UTC日期,则参数将是相同的。)