【发布时间】:2021-04-08 08:35:06
【问题描述】:
这个问题可能听起来很愚蠢,但我的情况是:我在 Jetson Nano(单板计算机)上有一个 C++ 程序,想要获取当前时间和日期。然而,在我的应用程序中,我不能总是将互联网电缆连接到设备。尽管在 Ubuntu 设置中我告诉它自动从 Internet 获取时间,但当它在较长时间后(未连接电源时)开机时,系统时钟会变得混乱并且时间和日期完全错误。这就是我的 C++ 程序(使用 std::chrono::system_clock())然后拾取的内容。
有没有办法解决这个问题?不知何故,make 确实知道系统时间和日期何时设置不正确,即使设备未连接到互联网也是如此。我可以说是因为它在尝试使用“检测到时钟偏差”进行编译时失败。未连接到互联网时如何获取正确的时间和日期?
【问题讨论】:
-
除非您的设备上有电池来保存日期,否则您不能。 “Jetson Nano RTC”有不少热门歌曲,环顾四周。 (Make 只查看文件时间戳。如果找到在未来 IIRC 中创建的构建输出,它会抱怨。)
-
作为备用方案,您的程序可以定期将最后已知时间保存到文件中。然后它可以将当前时间与最后一个已知时间进行比较,如果当前时间更早,它可以使用当前时间在开始时与当前时间相比的偏移量,并将该增量添加到最后一个已知时间,并使用该计算时间。我在 1980 年代的 BBS 使用了这种方法,因为如果它断电,RTC 就会不正确(因为电池没电了)。
-
如果您还没有这样做,请参阅How to add a correct battery for RTC on Jetson Nano
标签: c++ date time clock system-clock