目前,我们有一种以TimeZone感知方式处理.net DateTimes的标准方法:每当我们生成一个DateTimeUTC时(例如使用DateTime.UtcNow),每当我们显示一个时,我们就会从UTC转换回用户的本地时间.
这工作正常,但我一直在阅读DateTimeOffset它如何捕获对象本身的本地和UTC时间.所以问题是,使用DateTimeOffsetvs我们已经做的事情有什么好处?
我正在尝试将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.