【问题标题】:Date field value changing from client side to server side日期字段值从客户端更改为服务器端
【发布时间】:2018-02-03 19:13:11
【问题描述】:

我有一个对控制器的 AJAX 调用,我正在使用 JSON.stringify 将数据发送到控制器操作。我的问题是客户端的日期字段是 EDT(我的本地时间)正在服务器端转换为 GMT。我应该做些什么让它留在 EDT。

这是我的代码:

var EndDate= new Date($('#TBEndDateTime').val().trim()); //EndDate= Sat Aug 26 2017 12:54:00 GMT-0400 (Eastern Daylight Time) (Console value while debugging)

var objEnd = JSON.stringify({
    EndDate: EndDate
})

$.ajax({
    type: "POST",
    url: "/Close/EndFunction",
    contentType: 'application/json',
    dataType: "json",
    data: objEnd,
    cache: false,
    success: function (result) {

    }
});

在服务器端

 public JsonResult EndFunction(FunctionEnd endFunction) //EndDate 2017-08-26T16:54:00.000Z
 {

 }

为什么会出现差异以及如何解决?

编辑 1: 使用 .toISOstring 也不起作用。

var EndOn = new Date($('#TBEndDateTime').val().trim()).toISOString(); //EndDate 2017-08-26T16:54:00.000Z

【问题讨论】:

  • 你不能只使用 UTC 中的日期然后进行正确的转换吗?
  • new Date(val).toISOString() 可能会有所帮助。
  • @axel.michel ISOstring() 不会再次将其转换为 GMT 吗?

标签: c# jquery ajax asp.net-mvc date


【解决方案1】:

您需要做的是避免 stringify 操纵您的代码。这就是@axel.michel 指出的 ISOstring() 将帮助您的地方。您也可以使用 getTimezoneOffset() 来获取正确的时区。

var EndDate= new Date($('#TBEndDateTime').val().trim());
EndDate= new Date(EndDate.getTime() - (EndDate.getTimezoneOffset() * 60000)).toISOString();

【讨论】:

    猜你喜欢
    • 2011-06-14
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多