【发布时间】:2010-08-17 14:05:52
【问题描述】:
我需要从我的桌面应用程序中的一个互联网时间服务器获取当前时间。我想我需要像请求字符串和正则表达式这样的东西来从用户想要的任何站点(可能是几个预定义的站点)获取时间。
或者可能有一些免费的图书馆存在?
谢谢。
【问题讨论】:
我需要从我的桌面应用程序中的一个互联网时间服务器获取当前时间。我想我需要像请求字符串和正则表达式这样的东西来从用户想要的任何站点(可能是几个预定义的站点)获取时间。
或者可能有一些免费的图书馆存在?
谢谢。
【问题讨论】:
这就是 Network Time Protocol 的用途。但这可能最好留给您的操作系统,以免您最终使用不同的、不完全同步的服务器来决斗应用程序。
有关 UNIX 和 Windows 实现,请参阅上面链接中的标题。
【讨论】:
有免费的库和关于如何检索时间的规范,以及您接收时间的格式(因此通常不需要 RE)。您的选择取决于您想要的精度/准确度级别。
RFC 868 给第二个时间,这对于很多人的目的来说完全足够了。如果它足够好,它很多比下面列出的其他方法更容易实现。
RFC 5905 定义了网络时间协议。只要您只想获取时间,而不是为其他任何人提供时间,NTP 可能就有点过头了。
RFC 4330 定义了 SNTP(简单 NTP),它是充当“叶节点”的计算机的 NTP - 即它们从其他地方检索时间,但没有其他任何东西从它们检索时间。
The NTP project 为许多系统提供免费的 NTP 库。
【讨论】:
这感觉就像操作系统应该自己做的事情......
互联网上有一个称为 NTP 的协议,可以从时间服务器返回时间。
您可能想尝试寻找可以使用 NTP 为您检索时间的库/类。
或者您可以尝试查看ntpclient 的源代码。
【讨论】:
通常,大多数操作系统都嵌入了这样的功能。
Windows 和 Linux 都可以与 NTP 服务器同步。
如果真的想让用户更改其时区,您应该寻找特定于操作系统的 API,而不是直接与时间服务器通信然后更改系统时间。这会方式更好。
【讨论】:
也许你可以看看这段代码并获得一些灵感:
【讨论】: