【问题标题】:Does time.h need connection to internettime.h 需要连接到互联网吗
【发布时间】: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


【解决方案1】:

不,time.h 不需要互联网连接。在计算机上,它向操作系统询问当前时间并进行一些转换以返回 Epoch。所有 PC 电脑都有一个带电池的时钟芯片,可以在断电时保持时间。大多数操作系统使用 Internet 来获取时间以确保时钟具有正确的时间。如果没有互联网,那么时钟仍然给出合理正确的时间。

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

这是一个example of real time clock,用于连接微控制器。

【讨论】:

  • 感谢您的回复,我已将您的回答标记为已接受
  • 也许可以尝试再次单击“接受”复选标记;由于某种原因,它没有显示为已接受。
  • 很多微控制器也有内置的 RTC,但您需要对其进行配置,并且您需要为系统设计一个电池来维护它。
  • 拥有电池供电的 RTC 并不能解决问题。您还需要一个使用它的库。这是部分硬件和部分软件。同样,您需要有一种机制来设置 RTC 以匹配某个时间标准,否则您总是半准确的错误。
  • @MasoomKumar 抱歉,您尚未将我的答案标记为已接受,您已对其进行了投票。那不一样。查看您投​​票的位置:这是一个勾号,您必须单击才能接受答案。只有您,原始发帖人,才能看到该刻度线是可点击的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多