【发布时间】:2019-12-06 19:59:03
【问题描述】:
基本上我需要一个 C 语言的时间开关。 我使用 strftime 获取当前日期和时间。 所以最后我将信息作为字符串。
对于时间开关,我只需要比较小时和分钟。 所以在伪代码中,例如:
static bool isSwitchedOn = false;
if(timeOfDay>timeToSwitchOn && !isSwitchedOn) {
switchOn();
isSwitchedOn = true;
}
else if(timeOfDay>=timeToSwitchOf && isSwitchedOn) {
switchOff();
isSwitchedOn = false;
}
一种解决方案是使用 atoi 将所有时间转换为 int,然后分别比较小时和分钟。
我看到我可以使用 difftime,但这也需要一个日期,我根本不想使用日期。所以,因为我已经有时间这个问题不是How do I measure time in C?的重复@
编辑:对不起,我不够清楚。 我没有与当前时间进行比较的日期信息。 更像是每天 20:33 开启和 20:55 关闭。
有没有更好的解决方案?
谢谢
【问题讨论】:
-
如果您使用了
strftime,这是否意味着您有时间在一个结构中?你不能只使用这些值吗? -
如果我必须将当前时间与例如时间进行比较,我该如何使用 time()时间“20:33”?
-
time()取模(24 * 60 * 60)(又名 86400)的值给出了 POSIX 机器上从一天开始(UTC 午夜)开始的秒数。 POSIX 时间系统不跟踪闰秒。如果您不住在 UTC 时区,则需要补偿您的时区与 UTC 的偏移——这就是生活开始变得棘手的地方。