我有一个DateTime,我想格式化为" 2009-09-01T00:00:00.000Z",但下面的代码给我" 2009-09-01T00:00:00.000+01:00"(两行):
new DateTime(2009, 9, 1, 0, 0, 0, 0, DateTimeKind.Utc).ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffzzz")
new DateTime(2009, 9, 1, 0, 0, 0, 0, DateTimeKind.Utc).ToUniversalTime().ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffzzz")
Run Code Online (Sandbox Code Playgroud)
任何想法如何使其工作?
我正在尝试将UTC日期作为查询字符串参数传递给Web API方法.URL看起来像
/api/order?endDate=2014-04-01T00:00:00Z&zoneId=4
Run Code Online (Sandbox Code Playgroud)
方法的签名看起来像
[HttpGet]
public object Index(int zoneId, DateTime? endDate = null)
Run Code Online (Sandbox Code Playgroud)
日期即将到来,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
};
Run Code Online (Sandbox Code Playgroud)
编辑#1:我注意到,当我发布2014-04-01T00:00:00Z它时,它将序列化为C#中的UTC DateTime类型.然而,我发现了一个endDate.Value.ToUniversalTime()改变它的工作,虽然我觉得奇怪的是它如何用于POST而不是GET.