time.h 是否需要连接到互联网

Does time.h need connection to internet

我一直在尝试 运行 我电脑上的一个 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 以来的时间吗?如果不是那么为什么?

不,time.h不需要互联网连接。在计算机上,它向 OS 询问当前时间并转换为 return 纪元。所有 PC 计算机都有一个带电池的时钟芯片,在断电时保持时间。大多数 OS 使用 Internet 获取时间并确保时钟的时间正确。如果没有互联网,那么时钟仍然给出一个合理的正确时间。

在微控制器上,通常没有时钟芯片(RTC)来保持掉电时的时间。您可以购买 RTC 连接到微控制器并读取它而不是使用标准时间功能。

这里是 example of real time clock 连接到微控制器。