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

时间:2018-05-03 10:36:54

标签: javascript c# datetime

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

到目前为止,问题是C# DateTimeDate从服务器发送之前总是 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

的秒数

为什么?我错过了什么?

1 个答案:

答案 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格式使用该日期。