事实:
datetime
和date
datetime
和date
都会映射到C#的DateTime
datetime
列中,我始终存储UTC日期。date
列,但我需要在新表中使用它SQL Server --> C# (server side) --> JSON (client side)
我已将JSON Serializer设置为始终将DateTime
变量返回给客户端,格式为yyyy-MM-ddThh:mm:ssZ
,这是一种很好的JavaScript格式。最后的Z(“zulu”)声明它是UTC时区,因此我的客户端应用程序知道它需要在显示时修复时区。到目前为止,所有内容都需要在显示时固定(因为一切都是UTC)
因为我想开始使用SQL Server类型date
,所以最后Z
会在那些date
个案例中烦恼(但datetime
仍然需要例)。由于我的服务器端的所有内容都是DateTime
,我不知道如何让JSON Serializer知道他正在查看哪种DateTime
...
我的问题是...... JsonSerializerSettings
是否可以知道他是否正在转换来自DateTime
或date
的{{1}}?如果没有,解决这个问题的好方法是什么?
这是我的Serializer:
datetime
这就是我使用它的方式:
public class JsonNetResult : ActionResult
{
public Encoding ContentEncoding { get; set; }
public string ContentType { get; set; }
public object Data { get; set; }
public JsonSerializerSettings SerializerSettings { get; set; }
public Formatting Formatting { get; set; }
public JsonNetResult()
{
var isoDateTimeConverter = new IsoDateTimeConverter();
isoDateTimeConverter.DateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'";
SerializerSettings = new JsonSerializerSettings();
SerializerSettings.Converters.Add(isoDateTimeConverter);
}
public override void ExecuteResult(ControllerContext context)
{
...
}
}