Безопасно ли использовать (UTC Unix timestamp% 60) в качестве поля секунд UTC? - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть встроенное устройство, которое выполняет грубую синхронизацию времени с Unix-временем беспроводного шлюза на основе Linux (time_t), которое установлено в UTC.Мне нужно согласовать некоторые из моих действий со временем настенных часов - например, есть задача, которую мне нужно выполнить через 30 секунд после минуты.Нужно ли вызывать обычные функции стандартной библиотеки C, чтобы получить поле секунд, или безопасно сделать что-то попроще:

int seconds_past_the_minute = (unix_utc_timestamp % 60);

1 Ответ

0 голосов
/ 07 декабря 2018

Это должно быть безопасно, но безобразно.

Поскольку временные метки Unix игнорируют високосные секунды и, поскольку они считаются с полуночи какой-либо даты, операция по модулю unix_utc_timestamp % 60 должна дать вам секунду минуты.Несколько тестов должны подтвердить, и если они это сделают, я буду рад правильности.

Однако, что плохого в использовании библиотечной функции?Мой опыт работы с библиотекой C восходит к 2002 году, поэтому я точно не помню, как она выглядит, но вы можете подумать, что она дает более читабельный и понятный код.Поэтому, если нет сильных аргументов против этого, я бы предпочел это.

(Дата, с которой рассчитываются метки времени Unix: 1970-01-01. В UTC. Но аргумент будетто же самое, если бы это была любая другая дата UTC.)

...