gpt4 book ai didi

c# - 如何将 DateTime.Now 与 NTP 服务器同步?

转载 作者:太空狗 更新时间:2023-10-30 01:18:42 26 4
gpt4 key购买 nike

我有一个 NTP 服务器,我得到的日期如下:

DateTime NTPDateTime = GetServerTime(); //GetServerTime returns a new DateTime

但我的问题是,我只能从 ntp-server 获取当前时间,但如果不重新连接到 NTP-Server 就无法更新它。

我试过在类似(1000 毫秒间隔)的线程中完成

string displayTime() {
this.lblServerTime.Text = NTPDateTime.ToLongTimeString();
}

它始终显示与预期相同的日期时间。喜欢 (01.10.2014 - 15:31:25)

但是我怎样才能更新 DateTime 以便它总是给我当前的 DateTime?

例如,如果我使用以下代码,它会给出当前本地时间

//in a thread
string displayTime() {
this.lblServerTime.Text = DateTime.Now.ToLongTimeString();
}

但我需要服务器时间而不是本地时间。我的问题是我不能每秒都得到它。

有没有办法做到这一点,而不是每秒都与 ntp 服务器建立新连接?我有超过 500 个需要服务器时间的客户端应用程序。

最佳答案

你不能不不断地轮询它。服务器上的时间可能会比本地 PC 时间变化更多或更少,因此您必须在每次刷新时进行同步。

另一种选择是将 PC 配置为与 NTP 服务器定期同步,并使用本地时间作为“服务器时间”。

您不能将 DateTime.Now 设置为您可能希望的服务器时间。

我能想到的最后一个选择是每分钟左右进行一次同步,并将本地和服务器之间的差异保留在内存中,并将其添加到显示时间中。

TimeSpan serverTimeDifference = GetServerTimeDifference();

DateTime actualTime = DateTime.Now + serverTimeDifference;

GetServerTimeDifference 是:

private static TimeSpan GetServerTimeDifference()
{
return GetServerTime() - DateTime.Now;
}

关于c# - 如何将 DateTime.Now 与 NTP 服务器同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26142879/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com