如果它是“datetime”而不是“date”(JsonSerializerSettings)

时间:2017-04-02 16:30:34

标签: c# datetime json.net

事实:

  1. 在SQL Server中,列类型为datetimedate
  2. 使用EF,datetimedate都会映射到C#的DateTime
  3. 在我的datetime列中,我始终存储UTC日期。
  4. 在我当前的数据库中没有date列,但我需要在新表中使用它
  5. 我的典型数据流是:SQL Server --> C# (server side) --> JSON (client side)
  6. 我已将JSON Serializer设置为始终将DateTime变量返回给客户端,格式为yyyy-MM-ddThh:mm:ssZ,这是一种很好的JavaScript格式。最后的Z(“zulu”)声明它是UTC时区,因此我的客户端应用程序知道它需要在显示时修复时区。到目前为止,所有内容都需要在显示时固定(因为一切都是UTC)

    因为我想开始使用SQL Server类型date,所以最后Z会在那些date个案例中烦恼(但datetime仍然需要例)。由于我的服务器端的所有内容都是DateTime,我不知道如何让JSON Serializer知道他正在查看哪种DateTime ...

    我的问题是...... JsonSerializerSettings是否可以知道他是否正在转换来自DateTimedate的{​​{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)
        {
              ...
        }
    }
    

0 个答案:

没有答案