我正在开发一个小型电子商务,其中客户主服务器以Date
参数的秒数发送GET
。基于此,我必须检查当前Date
中发送的20
分钟是否不超过DateTime
分钟。
到目前为止,问题是C# DateTime
在Date
从服务器发送之前总是 3小时。
如果我执行new Date(2018, 4, 3, 12, 25, 00).getTime() / 1000
(从纪元获取秒数)并将其传递到服务器端的DateTime
我总是在3小时之前,所以在这个例子我得到了03-05-2018 09:25:00
这就是我正在解析服务器中的Date
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 Date
为什么?我错过了什么?
答案 0 :(得分:2)
Javascript Date.getTime
使用UTC,文档说明:
getTime()方法返回对应的数值 根据世界时间指定日期的时间。
所以你应该调整你的C#代码:
DateTime sDt = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc) // <
.AddSeconds(yourJsNumber).ToLocalTime();
如果您不想在当地时区使用日期,则可以省略ToLocalTime
并以UTC格式使用该日期。