【发布时间】:2018-05-03 10:36:54
【问题描述】:
我正在开发一个小型电子商务,其中客户主服务器将Date 发送为GET 参数的秒数。基于此,我必须检查从他们发送的Date 分钟是否不超过当前DateTime 中的20 分钟。
目前的问题是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 的秒数
这是为什么呢?我错过了什么?
【问题讨论】:
-
您的网络服务器在哪个时区?您客户的主服务器在哪里?
-
我的是
UTC +2,但是当我用浏览器生成的自定义秒数进行测试时,它们不应该是一样的吗? -
我现在的时间是
1;47PM -
确认服务器上的时区与您的机器上的时区相同。否则 DateTimeKind.Local 会将时间更改为您的本地机器时间,并且它将与服务器值不同。理想情况下,您应该以 UTC 发送时间。
-
您的当地时间与 UTC 相差 3 小时。这可能解释了你所看到的。一端是处理 UTC,另一端是处理您的时区。 timeanddate.com/worldclock/timezone/utc
标签: javascript c# datetime