您的位置:首页 > Web前端 > JavaScript

Json 的日期格式与.Net DateTime类型的转换

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

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

staticvoidMain(string[]args)
{
string[]jsonDates={"/Date(1242357713797+0800)/","/Date(1242357722890+0800)/"};
foreach(stringjsonDateinjsonDates)
{
Console.WriteLine("Json:{0}",jsonDate);
DateTimedtResult=JsonToDateTime(jsonDate);
Console.WriteLine("DateTime:{0}",dtResult.ToString("yyyy-MM-ddhh:mm:ssffffff"));
}
Console.Read();
}

publicstaticDateTimeJsonToDateTime(stringjsonDate)
{
stringvalue=jsonDate.Substring(6,jsonDate.Length-8);
DateTimeKindkind=DateTimeKind.Utc;
intindex=value.IndexOf('+',1);
if(index==-1)
index=value.IndexOf('-',1);
if(index!=-1)
{
kind=DateTimeKind.Local;
value=value.Substring(0,index);
}
longjavaScriptTicks=long.Parse(value,System.Globalization.NumberStyles.Integer,System.Globalization.CultureInfo.InvariantCulture);
longInitialJavaScriptDateTicks=(newDateTime(1970,1,1,0,0,0,DateTimeKind.Utc)).Ticks;
DateTimeutcDateTime=newDateTime((javaScriptTicks*10000)+InitialJavaScriptDateTicks,DateTimeKind.Utc);
DateTimedateTime;
switch(kind)
{
caseDateTimeKind.Unspecified:
dateTime=DateTime.SpecifyKind(utcDateTime.ToLocalTime(),DateTimeKind.Unspecified);
break;
caseDateTimeKind.Local:
dateTime=utcDateTime.ToLocalTime();
break;
default:
dateTime=utcDateTime;
break;
}
returndateTime;
}


结果如下:





作者:Bruce(编程的艺术世界)

出处:http://coolcode.cnblogs.com

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: