是否可以设置JSON.Net,如果要序列化DateTime,则将其序列化为UTC格式。从字符串反序列化时,它被反序列化为“LocalTime”。例如:
2012-01-01T16:00:00Z
2012-01-01T15:00:00Z
2012-01-01T16:00:00Z
- >反序列化至01/01/2012 17:00 + 1GMT(Kind = Local)2012-01-01T15:00:00Z
- >反序列化至01/01/2012 16:00 + 1GMT(Kind = Local)但是,我希望“自动”发生这种情况,而不必每次都使用设置来指定它 - 就像全局设置一样。这可能吗?
答案 0 :(得分:5)
在ASP.NET WebAPI中,它是可能的。试试这个:
// Converters will be userd during serialization (override DateTimeZoneHandling)
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AdjustToUniversal });
// DateTimeZoneHandling will be effective during deserialization
config.Formatters.JsonFormatter.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Local;
答案 1 :(得分:1)
作为未来参考的注释,对此的“修复”不是使用DateTime
而是使用DateTimeOffset
,因为DateTime
可能会对时区产生各种混淆英寸
存储DateTimeOffset
并不存在歧义,因为它总是包含时区,并且无论何时何地,总是指相同的时间点。