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"
                             };

    大功告成!

  • 相关阅读:
    Web前端基础(1):HTML(一)
    python基础(35):协程
    python基础(34):线程(二)
    python基础(33):线程(一)
    python基础(32):进程(二)
    python基础(31):进程(一)
    python基础(30):黏包、socket的其他方法
    用keychain这个特点来保存设备唯一标识。
    判断iPhone的WiFi是否打开的两种方法 之是否连接上 WiFi
    NSStringCompareOptions
  • 原文地址:https://www.cnblogs.com/Benjamin/p/2974391.html
Copyright © 2011-2022 走看看