C# 从internet服务获取DateTime,并在瞬间与LocalTime进行比较

C# 从internet服务获取DateTime,并在瞬间与LocalTime进行比较,c#,datetime,asynchronous,compare,C#,Datetime,Asynchronous,Compare,我正在尝试从internet服务获取DateTime,然后将其与计算机上的localTimeDate进行比较。我的问题是,有时它有一秒钟的差异,这是合乎逻辑的,因为需要几毫秒才能得到一个变量和另一个变量。 有没有办法获取这两个变量并在毫秒内进行比较? 我想做一些类似异步加载的事情,但我不知道如何做,也不知道这是否可行 这是我的密码 private string GetTime() { try {

我正在尝试从internet服务获取DateTime,然后将其与计算机上的localTimeDate进行比较。我的问题是,有时它有一秒钟的差异,这是合乎逻辑的,因为需要几毫秒才能得到一个变量和另一个变量。 有没有办法获取这两个变量并在毫秒内进行比较? 我想做一些类似异步加载的事情,但我不知道如何做,也不知道这是否可行

这是我的密码



     private string GetTime()
            {
                try
                {
                   MessageServiceType.Test : MessageServiceType.Production);
                    ITimeServiceContract timeServiceContract = new TimeServiceTestClient();
                    DateTime icisTime = timeServiceContract.GetTimeStamp();
                    DateTime icisDateTime = icisTime.ToLocalTime();
                    return icisDateTime.ToString();


                }
                catch (Exception ex)
                {
                    NLogger.NLogger.SilentLog(ex.ToString());
                }

                return DateTime.Now.ToString();
    }

     private void OnLoad(object sender, EventArgs e)
            {
                DateTime icisDateTime = DateTime.Parse(GetTime());
                lblIcisNetTime.Text = GetTime();
                lblLocalTime.Text = DateTime.Now.ToString();
                CompareDateTimes(icisDateTime, DateTime.Now);
            }

     private void CompareDateTimes(DateTime icisNetTime, DateTime pcTime)
            {
                if (icisNetTime.Hour  > pcTime.Hour ||
                    icisNetTime.Hour  < pcTime.Hour ||
                    icisNetTime.Minute > pcTime.Minute + 1 ||
                    icisNetTime.Minute + 1 < pcTime.Minute ||
                    icisNetTime.Day > pcTime.Day + 1 ||
                    icisNetTime.Day < pcTime.Day ||
                    icisNetTime.Month > pcTime.Month + 1 ||
                    icisNetTime.Month < pcTime.Month ||
                    icisNetTime.Year > pcTime.Year + 1 ||
                    icisNetTime.Year < pcTime.Year)

                    XtraMessageBox.Show(this,
                                        "Your PC clock is wrong!",
                                        "Wrong Time and Date", MessageBoxButtons.OK, MessageBoxIcon.Hand);
            }


您知道,来自远程服务器的请求中存在延迟,即使它只有5毫秒,而且有时,由于该延迟,当您捕获计算机的当前时间时,第二个时间可能与服务器的时间不同

因此,无论你做什么,直接比较时间、分钟等有时都会失败。这不是代码运行不够快的问题

相反,请尝试将从远程服务器获得的时间戳与本地计算机时间(+/-30ms)或任何您认为可以接受的延迟进行比较

您可能有兴趣阅读网络时间协议中如何解决这一问题:

@BrianMurrah谢谢。我还希望根据这两个变量显示相同的时间,而不仅仅是将其与+/-30ms进行比较。