我正在努力争取使用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()转换日期,但我希望自动在序列化中进行。
我真的很感激这方面的帮助
答案 0 :(得分:1)
这里可能发生的事情是,当发布的日期/时间在服务器端反序列化时,它是“UTC”类型,而不是“本地”。尝试使用服务器端的.ToLocalTime()将其转换为本地时间。