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