zoukankan      html  css  js  c++  java
  • 如何让datetime类型数据接受并且产出long或string类型?

    首先引用Newtonsoft.Json.dll,然后,见代码:

    View Code
        public class JsonConverterStrAndLongToDate : JsonConverter
        {
            public override bool CanConvert(Type objectType)
            {
                return objectType == typeof(DateTime);
            }
    
            public override object ReadJson(JsonReader reader, Type objectType, object existingValue,
                                            JsonSerializer serializer)
            {
                if (reader.TokenType == JsonToken.String)
                {
                    return From1970MilinSeconds(Int64.Parse((string)reader.Value));
                }
                else if (reader.TokenType == JsonToken.Integer)
                {
                    double s = 5/3;
                    return From1970MilinSeconds((Int64)reader.Value);
                }
                throw new JsonReaderException(string.Format("Unexcepted token {0}", reader.TokenType));
            }
    
            public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
            {
                var longValue = (long)(((DateTime)value).AddHours(-8) - new DateTime(1970, 1, 1)).TotalMilliseconds;
                writer.WriteValue(longValue);
            }
    
            /// <summary>
            /// 将毫秒值转成datetime类型
            /// </summary>
            /// <param name="datetime"></param>
            /// <returns></returns>
            private DateTime From1970MilinSeconds(long datetime)
            {
                datetime *= 10000;
    
                var ts = new TimeSpan(datetime);
                var dt = new DateTime(1970, 1, 1);
                dt = dt.Add(ts);//距离1970年1月1日的时间
                dt = dt.AddHours(8); 
    
                return Convert.ToDateTime(dt.ToString());
            }
        }

    最后,在序列化时

    View Code
     return new ContentResult()
                             {
                                 Content = JsonConvert.SerializeObject(result),
                                 ContentType = "application/json"
                             };

    大功告成!

  • 相关阅读:
    面向对象之补充
    继续面向对象之成员与组合
    面向对象初阶
    模块和包
    异常处理
    [Array]448. Find All Numbers Disappeared in an Array
    [Array]485. Max Consecutive Ones
    [Array] 561. Array Partition I
    [Array] 566. Reshape the Matrix
    opencv3.1线性可分svm例子及函数分析
  • 原文地址:https://www.cnblogs.com/Benjamin/p/2974391.html
Copyright © 2011-2022 走看看