好东西分享兼备忘

[转载]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

 

posted on 2014-06-22 18:19  IT流浪者  阅读(183)  评论(0编辑  收藏  举报