【发布时间】:2021-09-21 11:08:10
【问题描述】:
我一直在尝试在我的计算机上运行一个 c 函数,它给出了自 Epoch 以来经过的秒数,它似乎工作正常
#include <stdio.h>
#include <time.h>
int main () {
time_t seconds;
seconds = time(NULL);
printf("Number of seconds since January 1, 1970 = %ld\n", seconds);
return(0);
}
现在,我有一个微控制器,我尝试在其上运行相同的代码。自微控制器启动以来,它总是给我时间,而不是自 EPOCH(1970 年 1 月 1 日)以来。所以,我有点困惑为什么我没有得到通常的结果?我是否需要连接到互联网,以便某些服务器将自 EPOCH 以来的计时器发送到 time.h 库?
换句话说,如果我在没有互联网连接的计算机上运行此代码,我会得到自 EPOCH 以来的时间。如果不是那为什么?
【问题讨论】:
-
您的计算机有一个由电池供电的实时时钟 (RTC),可保持当前时间的合理近似值(如数字手表)。
-
如果我明白你想要的是今天的时间?
-
不,与上网无关。关闭计算机上的互联网访问并运行程序...问题在于您的微控制器系统没有带电池的实时时钟
-
time(NULL)将在您调用它时返回任何内部时钟,并且它不需要互联网连接,但是,如果您想保持内部时钟自动同步,拥有互联网连接会有所帮助。如果不这样做,则需要手动设置时钟 - 并在时钟开始漂移时不时进行设置。 -
@IanAbbott : 那么这是否意味着如果我从电脑中取出电池,然后重新插入,那么它可能会失去自 EPOCH 以来的时间,并且可能需要互联网来重新-同步?
标签: c microcontroller time.h