• 好东西分享兼备忘


    [转载]Json 的日期格式与.Net DateTime类型的转换 – CoolCode – 博客园.

    Json 的日期形式大概是这样:”/Date(1242357713797+0800)/” , 甭管它的格式是多么不友好(因为单从形式看根本不知道何年何月),如果这个Date只是一个属性的话, Json.Net 已经为我们处理好了。但有些很特殊的时候,需要单独把这个Date转换为.Net的DateTime格式,那么下面的代码就可以帮到你了。这个代码我已经找了很多次,终于被我发现了,免去重复造轮子的劳动。

    这里跟大家分享一下, 可以保留毫秒,完全与原来结果一致。

     1 static void Main(string[] args)
     2   { 
     3       string [] jsonDates = {"/Date(1242357713797+0800)/" , "/Date(1242357722890+0800)/"};
     4       foreach (string jsonDate in jsonDates)
     5       {
     6           Console.WriteLine("Json : {0}", jsonDate);
     7           DateTime  dtResult =   JsonToDateTime(jsonDate);
     8           Console.WriteLine("DateTime: {0}", dtResult.ToString("yyyy-MM-dd hh:mm:ss ffffff"));
     9       } 
    10       Console.Read();
    11   }
    12 
    13   public static DateTime JsonToDateTime(string jsonDate)
    14   {
    15       string value = jsonDate.Substring(6, jsonDate.Length - 8);
    16       DateTimeKind kind = DateTimeKind.Utc;
    17       int index = value.IndexOf('+', 1);
    18       if (index == -1)
    19           index = value.IndexOf('-', 1);
    20       if (index != -1)
    21       {
    22           kind = DateTimeKind.Local;
    23           value = value.Substring(0, index);
    24       }
    25       long javaScriptTicks = long.Parse(value, System.Globalization.NumberStyles.Integer, System.Globalization.CultureInfo.InvariantCulture);
    26       long InitialJavaScriptDateTicks = (new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).Ticks;
    27       DateTime utcDateTime = new DateTime((javaScriptTicks * 10000) + InitialJavaScriptDateTicks, DateTimeKind.Utc);
    28       DateTime dateTime;
    29       switch (kind)
    30       {
    31           case DateTimeKind.Unspecified:
    32               dateTime = DateTime.SpecifyKind(utcDateTime.ToLocalTime(), DateTimeKind.Unspecified);
    33               break;
    34           case DateTimeKind.Local:
    35               dateTime = utcDateTime.ToLocalTime();
    36               break;
    37           default:
    38               dateTime = utcDateTime;
    39               break;
    40       }
    41       return dateTime ;
    42   }
    View Code
  • 相关阅读:
    相对路径与绝对路径的区别
    c语言 蛇形填空
    Java最大公约数 最小公倍数
    c语言 韩信点兵
    c语言倒三角形
    Java 分解质因数
    Java 求水仙花数
    Java 求素数
    Java基于OpenCV实现走迷宫(图片+路线展示)
    Java之函数式接口@FunctionalInterface详解(附源码)
  • 原文地址:https://www.cnblogs.com/wangxiuhui/p/3802809.html
Copyright © 2020-2023  润新知