【发布时间】:2014-04-30 03:23:32
【问题描述】:
我正在尝试将 UTC 日期作为查询字符串参数传递给 Web API 方法。网址看起来像
/api/order?endDate=2014-04-01T00:00:00Z&zoneId=4
方法的签名看起来像
[HttpGet]
public object Index(int zoneId, DateTime? endDate = null)
日期输入为31/03/2014 8:00:00 PM,但我希望输入为01/04/2014 12:00:00 AM
我的JsonFormatter.SerializerSettings 看起来像这样
new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver(),
DateTimeZoneHandling = DateTimeZoneHandling.Utc,
DateFormatHandling = DateFormatHandling.IsoDateFormat
};
编辑#1:
我注意到当我发布2014-04-01T00:00:00Z 时,它将序列化为 C# 中的 UTC DateTime 类型。但是,我发现了一种解决方法,可以通过 endDate.Value.ToUniversalTime() 对其进行转换,尽管我觉得它对于 POST 而不是 GET 的工作方式很奇怪。
【问题讨论】:
-
注意:JSON 序列化设置与 URI 绑定的参数无关。
标签: json datetime asp.net-web-api model-binding