Knockout JS和ASP.NET Web Api日期

时间:2012-11-13 10:31:42

标签: json knockout.js asp.net-web-api

我正在努力争取使用ASP.NET Web API专门针对日期进行淘汰。我看过this question和其他类似的,但我不喜欢给出的解决方案。

我有一个对象,里面有一些日期。当我从Web Api控制器返回它时,它被序列化如下:

{
    "AdjustmentId": "6b8bc63f-de50-4feb-b0e2-a10800cbc3c3",
    "PortfolioCode": 2461,
    "Description": "",
    "StartDate": "2012-11-13T00:00:00+02:00",
    "EndDate": "2012-11-13T00:00:00+02:00"
}

当我使用ko.toJSON从knockout返回完全相同的ViewModel时,我得到以下内容:

{
    "AdjustmentId": "6b8bc63f-de50-4feb-b0e2-a10800cbc3c3",
    "PortfolioCode": 2461,
    "Description": "",
    "StartDate": "2012-11-12T22:00:00Z",
    "EndDate": "2012-11-12T22:00:00Z"
}

问题是控制器上的日期现在没有反序列化。对象在那里,但日期设置为DateTime.Min。您还可以看到日期从13日午夜到12日晚上10点 - 这是因为时区的变化。

任何人都可以帮我这个吗?目前,我正在使用toISOString()转换日期,但我希望自动在序列化中进行。

我真的很感激这方面的帮助

1 个答案:

答案 0 :(得分:1)

这里可能发生的事情是,当发布的日期/时间在服务器端反序列化时,它是“UTC”类型,而不是“本地”。尝试使用服务器端的.ToLocalTime()将其转换为本地时间。