将计算机时间与互联网时间服务器同步的最佳方法是什么?

时间:2010-08-17 14:05:53

标签: c++ windows qt datetime

我需要从桌面应用程序中的某个Internet时间服务器获取当前时间。我想我需要像请求字符串和正则表达式这样的东西来从用户想要的任何站点获取时间(可能有几个预定义的站点)。

或者可能存在一些免费图书馆?

感谢。

5 个答案:

答案 0 :(得分:7)

这就是为Network Time Protocol而构建的内容。但它可能是您的操作系统最好的东西,以免您最终使用不同的,不完全同步的服务器进行决斗。

请参阅上面链接中的标题,了解UNIX和Windows实现。

答案 1 :(得分:2)

有关于如何检索时间的免费库规范,以及接收时间的格式(因此通常不需要RE)。您的选择取决于您想要的精度/准确度。

RFC 868为第二个提供时间,这完全足以满足很多人的目的。如果它足够好,那么实施它的很多比下面列出的其他更简单。
RFC 5905定义了网络时间协议。只要您只想获取时间,而不是为其他任何人提供它,NTP可能会有点矫枉过正。
RFC 4330定义了SNTP(简单NTP),它是用作“叶节点”的计算机的NTP的简化版本 - 即,它们从其他地方检索时间,但没有其他任何东西从它们中检索时间。

The NTP project为许多系统提供免费的NTP库。

答案 2 :(得分:1)

这感觉就像操作系统应该自己做的那样......

互联网上有一个名为NTP的协议,它从时间服务器返回时间。

您可能想尝试寻找可以使用NTP为您检索时间的库/类。

或者您可以尝试查看ntpclient的源代码。

答案 3 :(得分:0)

通常,大多数操作系统都嵌入了这样的功能。

Windows和Linux都可以与NTP服务器同步。

如果真的想让用户更改其时区,您应该查找特定于操作系统的API,而不是直接与时间服务器通信,然后更改系统时间。 方式更好。

答案 4 :(得分:0)

也许您可以查看此代码并获得一些灵感:

http://web.abnormal.com/~thogard/ntp/ntpdate.c