我有一个客户端和服务器端应用程序。客户端在英国服务器上,服务器在美国服务器上。
服务器上有一个验证,它检查消息何时从客户端发送并进行比较,以查看时间差。
这就是我如何在客户端应用程序(UK)上获得时间跨度的方法:
DateTime epochStart = new DateTime(1970, 01, 01, 0, 0, 0, 0, DateTimeKind.Utc);
TimeSpan timeSpan = DateTime.UtcNow - epochStart;
// Convert to string before send it to server
string requestTimeStamp = Convert.ToUInt64(timeSpan.TotalSeconds).ToString()在服务器(US)端,我有:
DateTime epochStart = new DateTime(1970, 01, 01, 0, 0, 0, 0, DateTimeKind.Utc);
TimeSpan currentTs = DateTime.UtcNow - epochStart;
var serverTotalSeconds = Convert.ToUInt64(currentTs.TotalSeconds);
var requestTotalSeconds = Convert.ToUInt64(requestTimeStamp);
if ((serverTotalSeconds - requestTotalSeconds) > requestMaxAgeInSeconds)
{
//....
}当服务器和客户端位于英国服务器上时,一切都正常,但在不同的服务器上出现问题时就会出现问题。
我的问题是:
DateTime.UtcNow会给我错误的时间吗?)发布于 2015-05-21 12:13:32
无论时区/时差如何,UTC在两台服务器上的时间是否完全相同?
理论上应该是这样。但是,取决于客户机和服务器都与之交谈的NTP服务器,它们可能会有所不同。希望如果他们是不同的,这是一个很小的差别。
个人电脑系统的时间是多少?(因此,如果系统中的时间设置为错误的时间,那么DateTime.UtcNow会给我错误的时间吗?)
获取一个DateTime对象,该对象设置为此计算机上的当前日期和时间,表示为协调世界时(UTC)。
https://stackoverflow.com/questions/30373026
复制相似问题