有没有办法在不使用系统时钟的情况下在 C++ 中获取时间和日期?

Is there a way to get time and day in C++ without using the system clock?

这个问题听起来可能很愚蠢,但这是我的情况:我在 Jetson Nano(单板计算机)上有一个 C++ 程序,想要获取当前时间和日期。然而,在我的应用程序中,我不能总是将互联网电缆连接到设备。虽然在 Ubuntu 设置中我告诉它自动从互联网获取时间,但当它在较长时间后开机时(当它未连接电源时),系统时钟变得混乱并且完全错误时间和日期。这就是我的 C++ 程序(使用 std::chrono::system_clock())然后选择的内容。

有办法解决这个问题吗?不知何故,即使设备未连接到互联网,make 也知道何时系统时间和日期设置不正确。我可以说是因为它在尝试使用“检测到时钟偏差”进行编译时失败了。未连接到 Internet 时如何获取正确的时间和日期?

Somehow, make does know when system time and date are set incorrect even if the device is not connected to the internet.

'不怕。

它只是发现自上次检查以来时间倒退了,并且知道这不是自然的时间运作方式。是猜测。时钟现在可能错了,以前可能错了,或者两次都错了。

时钟是您获取时间的来源。如果你没有时钟,你就没有时间。 ‍♂️ 如果你 有一个时钟(就像大多数计算机一样,包括你的计算机),但它是不可追踪的(例如,通过连接到本地时间服务器的 NTP 服务器,或一个在互联网),你永远无法相信它。

你有一个无法追踪的时钟,并且已经不可靠,因为显然没有电池可以让它长期保持时间。如果您想知道时间,您需要至少解决其中一个问题,最好同时解决这两个问题。

还好,好像可以install a backup battery for your Real-Time Clock,解决了可靠性问题。如果没有可追溯性,您仍然会依赖时钟自身的属性,并且它可能会逐渐失去或增加时间,但如果您手动设置一次,那么您至少会在球场上待上好一阵子。您可以查看时钟的规格以了解该范围有多大,以及您可能需要多长时间从其他来源(例如手表!)更新时间。