首页
学习
活动
专区
圈层
工具
发布

UTC时差
EN

Stack Overflow用户
提问于 2015-05-21 11:55:27
回答 1查看 347关注 0票数 3

我有一个客户端和服务器端应用程序。客户端在英国服务器上,服务器在美国服务器上。

服务器上有一个验证,它检查消息何时从客户端发送并进行比较,以查看时间差。

这就是我如何在客户端应用程序(UK)上获得时间跨度的方法:

代码语言:javascript
复制
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)端,我有:

代码语言:javascript
复制
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)
{
     //....
}

当服务器和客户端位于英国服务器上时,一切都正常,但在不同的服务器上出现问题时就会出现问题。

我的问题是:

  1. 无论时区/时差如何,UTC在两台服务器上的时间是否完全相同?
  2. 个人电脑系统的时间是多少?(因此,如果系统中的时间设置为错误的时间,那么DateTime.UtcNow会给我错误的时间吗?)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-21 12:13:32

无论时区/时差如何,UTC在两台服务器上的时间是否完全相同?

理论上应该是这样。但是,取决于客户机和服务器都与之交谈的NTP服务器,它们可能会有所不同。希望如果他们是不同的,这是一个很小的差别。

个人电脑系统的时间是多少?(因此,如果系统中的时间设置为错误的时间,那么DateTime.UtcNow会给我错误的时间吗?)

是的,MSDN的DateTime.UtcNow文档说:

获取一个DateTime对象,该对象设置为此计算机上的当前日期和时间,表示为协调世界时(UTC)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30373026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档