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日期的秒数
为什么呢?我缺少什么?JavascriptDate。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,另一端处理您的时区。