比较客户端和服务器系统时间的差异(Javascript 和 C#)

Compare Difference in Client and Server System times (Javascript and C#)

我希望将客户端的系统时间(使用 javascript)与服务器的时间(在 C# 中)进行比较。目前我正在使用以下方法来抢占客户的时间:

var d = new Date();
var time = d.getTime();

returns 自某个日期以来的时间(以毫秒为单位)。

然后我 运行 DateTime.Now 在服务器上等待时间。这是在客户端做的最后一件事,也是在服务器端做的第一件事。然后将差异作为元素添加到浏览器指纹中。

我不确定这是否是找到这些时间的最佳方法,或者将这些时间与实际时间进行比较的最佳方法是什么。我正在寻找一种方法来比较我从客户端获得的时间和我从服务器获得的时间的毫秒差异,无论是通过转换我获得的不同时间格式,还是以不同的方式请求时间。

实际计算取决于您希望计算它的位置(在客户端或服务器上)。不过,最重要的是决定您希望以哪种格式进行实际差异化。 JavaScript returns 自 UNIX epoch when using getTime(). You could easily calculate the same time object in C#, check out this link for more info on calculating the UNIX epoch in C# 以来的毫秒数。这将为您提供两个具有毫秒数的变量,可以很容易地用于 add/subtract 来比较服务器和客户端之间的时间差异。

您可能还应该检查服务器和客户端之间的时区差异。您可以使用以下方法获取客户端本地时区与 UTC 时区的偏移量:

var offset = new Date().getTimezoneOffset();

编辑: @RobG 公正地指出 UNIX 纪元始终基于 UTC,因此不需要时区计算。