C# 将UTC时间字符串反序列化为本地时间
我的问题与此类似: 除了我在控制器方法中使用([FromBody]dtoWithTime)之外 控制器调用看起来像C# 将UTC时间字符串反序列化为本地时间,c#,json,asp.net-mvc-4,datetime,deserialization,C#,Json,Asp.net Mvc 4,Datetime,Deserialization,我的问题与此类似: 除了我在控制器方法中使用([FromBody]dtoWithTime)之外 控制器调用看起来像 public JsonResult DiscoverProject([FromBody] dtoWithTime dto) {} 其中(我已经简化了这个示例。) 请求是以带有这些标题/数据的帖子的形式出现的(摘自fiddler) 当日期进入控制器时,它变成2014-05-30 20:00:00 我希望日期以Utc类型从UI发送的形式输入。我可以在控制器中使用ToUniver
public JsonResult DiscoverProject([FromBody] dtoWithTime dto) {}
其中(我已经简化了这个示例。)
请求是以带有这些标题/数据的帖子的形式出现的(摘自fiddler)
当日期进入控制器时,它变成2014-05-30 20:00:00
我希望日期以Utc类型从UI发送的形式输入。我可以在控制器中使用ToUniversalTime()操纵日期,这可以按照我的意愿工作,唯一的例外是检查此日期的SpecFlow测试失败。如果我能让序列化程序保持Utc时间,一切都会很好
我尝试的是使用和设置global.asax.cs中的默认设置
JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
DateTimeZoneHandling = DateTimeZoneHandling.Utc
};
这对我来说很有效,但破坏了我们应用程序中的许多序列化,包括枚举
那么,还有什么可以装饰约会时间的吗?或者为MVC json反序列化程序设置默认日期类型?json是传输数据的绝佳格式。不幸的是,它做得不好的一件事是日期。为了让它们在不同的平台上正常工作,存在许多变通方法。最终我们要做的是将所有JSON日期数据作为字符串发送。然后在我们的控制器中,我们使用TryParse将它们转换为实时类型:
DateTime myDate
if (DateTime.TryParse(inputJsonStringDate, out myDate))
//Success
else
//Not a valid date
什么版本的MVC?当日期进入控制器时,
是什么意思?是否有代码?您是否考虑过创建自定义模型活页夹?控制器调用和MVC版本更新问题将查看自定义模型活页夹。此应用程序中没有任何代码。我正在尝试避免向控制器添加代码,这样我们就不必知道何时向dto添加了日期时间。我们还有其他的应用程序可以传递日期字符串。
JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
DateTimeZoneHandling = DateTimeZoneHandling.Utc
};
DateTime myDate
if (DateTime.TryParse(inputJsonStringDate, out myDate))
//Success
else
//Not a valid date