我有一个NTP服务器,我得到的日期如下:
DateTime NTPDateTime = GetServerTime(); //GetServerTime returns a new DateTime
但我的问题是,我只从ntp-server获取当前时间,但在没有重新连接到NTP服务器之后无法更新它。
我试过在类似(1000毫秒间隔)的线程中做到这一点
string displayTime() {
this.lblServerTime.Text = NTPDateTime.ToLongTimeString();
}
它始终显示与预期相同的DateTime。喜欢(01.10.2014 - 15:31:25)
但是如何更新DateTime以便它总是给我当前的DateTime?
示例如果我使用以下代码,它会给我当前的本地时间
//in a thread
string displayTime() {
this.lblServerTime.Text = DateTime.Now.ToLongTimeString();
}
但我需要服务器时间而不是本地时间。而我的问题是我无法每时每刻都得到它。
有没有办法做到这一点,每秒都没有新的连接到ntp-server?我有超过500个客户端应用程序需要服务器时间。
答案 0 :(得分:4)
你不能不进行民意调查。服务器上的时间可能会比本地PC时间更多或更少,因此您必须在每次刷新时进行同步。
另一种选择是将PC配置为与NTP服务器进行定期同步,并将本地时间用作服务器时间'。
您无法根据需要将DateTime.Now
设置为服务器时间。
我能想到的最后一个选项是每分钟左右进行一次同步,并保留本地和服务器在内存中的区别,并将其添加到显示的时间。
TimeSpan serverTimeDifference = GetServerTimeDifference();
DateTime actualTime = DateTime.Now + serverTimeDifference;
GetServerTimeDifference
的位置:
private static TimeSpan GetServerTimeDifference()
{
return GetServerTime() - DateTime.Now;
}