Javascript JS Date seconds在c中给出了不同的日期#

Javascript JS Date seconds在c中给出了不同的日期#,javascript,c#,datetime,Javascript,C#,Datetime,我正在开发一个小型电子商务,其中客户主服务器发送Date作为GET参数的秒数。基于此,我必须检查他们发送的日期分钟在当前日期时间中是否不超过20分钟 到目前为止,问题是C#DateTime总是在从服务器发送Date之前3小时 如果我做了新日期(2018,4,3,12,25,00).getTime()/1000(从纪元中获取秒数)并将其传递到服务器端的日期时间,我总是比早3个小时,因此在本例中我得到03-05-2018 09:25:00 这就是我在服务器中解析日期的方式 DateTime sDt

我正在开发一个小型电子商务,其中客户主服务器发送
Date
作为
GET
参数的秒数。基于此,我必须检查他们发送的
日期
分钟在当前
日期时间
中是否不超过
20
分钟

到目前为止,问题是
C#DateTime
总是在从服务器发送
Date
之前3小时

如果我做了
新日期(2018,4,3,12,25,00).getTime()/1000
(从纪元中获取秒数)并将其传递到服务器端
日期时间
,我总是比早3个小时,因此在本例中我得到
03-05-2018 09:25:00

这就是我在服务器中解析
日期的方式

DateTime sDt = (new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Local))
  .AddSeconds(double.Parse(sessionDs.Tables[0].Rows[0]["DT"].ToString()));
其中,
DataColumn
的值是距离JS
日期的秒数


为什么呢?我缺少什么?

Javascript
Date。getTime使用UTC,如文档所述:

getTime()方法返回与 根据世界时间,指定日期的时间

所以你应该像这样调整你的C代码:

DateTime sDt = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc) // <
    .AddSeconds(yourJsNumber).ToLocalTime();
DateTime sDt=newdatetime(1970,1,1,0,0,0,0,0,DateTimeKind.Utc)//<
.AddSeconds(yourJsNumber).ToLocalTime();

如果您不需要本地时区中的日期,您可以省略
ToLocalTime
,并在UTC中使用它。

您的web服务器位于哪个时区?您的客户在?我的主服务器是
UTC+2
,但当我使用从浏览器生成的自定义秒数进行测试时,它们不应该是相同的吗?我当前的时间是
1;47PM
确认服务器上的时区与您的机器相同。否则,DateTimeKind.Local将时间更改为本地计算机时间,并且它将不同于服务器值。理想情况下,您应该使用UTC发送时间。您的本地时间距离UTC 3小时。这很可能解释了你所看到的。一端处理UTC,另一端处理您的时区。