1

我正在与 ASP.NET Web API 合作,特别是在日期方面。我看过这个问题和其他类似的问题,但我不喜欢给出的解决方案。

我有一个带有一些日期的对象。当我从 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 从淘汰赛中返回完全相同的 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() 转换日期,但我希望在序列化中自动发生这种情况。

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

4

1 回答 1

1

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

于 2012-11-14T12:14:57.993 回答