ASP.NET控制器在AJAX请求中添加1小时到目前为止(格式ISO 8601)

时间:2014-07-12 11:07:52

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

我正在编写一个ASP.NET MVC应用程序,它将ISO 8601中的日期发送到我的控制器。我的控制器接收日期作为参数并将其转换为日期时间。我遇到的问题是该日期增加了1小时。我写了很少的代码来复制我的问题。

这是我的控制器

public class HomeController : Controller
{

    public ActionResult Index()
    {
        return View();
    }

    public void ShowDate(DateTime NewEventStart)
    {
        int x = 0; //set a breakpoint here  

    }
}

这是我的观点

<script src="~/Scripts/jquery-2.1.1.js"></script>

<script>
$(document).ready(function () {

    //this is a date in ISO 8601 format
    start = "2014-07-07T06:30:00.000Z";    
    UpdateEvent(start);


});


function UpdateEvent(EventStart) {

    var dataRow = {        
        'NewEventStart': EventStart        
    }
    $.ajax({
        type: 'POST',
        url: "/Home/ShowDate/",
        dataType: "json",
        contentType: "application/json",
        data: JSON.stringify(dataRow)
    });
}

</script>

当我运行上面的代码并使用调试工具检查NewEventStart的值时,它说时间已经变为07:30,我希望它可以说是06:30。

我怀疑我的机器上的某些时间设置可能会导致这种或某种时区问题?有人可以看到问题和/或修复?

1 个答案:

答案 0 :(得分:2)

将日期字符串解析为您当地的时区。如果您想要UTC日期(即与您的视图匹配日期字符串),请在控制器操作方法中使用

NewEventStart = NewEventStart.ToUniversalTime();