0%

C#中将时间格式从string转为DateTime

前言,想在WP7编辑一个twitter API的应用,在获取数据时发现时间格式为:Fri Jul 16 16:58:46 +0000 2010。而且获取格式为string,很难进行处理。
Google一下,发现DateTime.ParseExact()这个函数,可以自定来源格式。下面是debug的过程:

1
2
3
4
using System.Globalization;
System.Diagnostics.Debug.WriteLine("Debug Message");
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-us");
System.Diagnostics.Debug.WriteLine(DateTime.Now.ToString("ddd MMM dd HH:mm:ss zzz yyyy", System.Threading.Thread.CurrentThread.CurrentCulture));

可以得出系统时间的输出格式,如果不指定culture,会默认显示中文,如果指定en-us,则显示英文。

Sat Mar 10 12:48:18 +08:00 2012

可见与twitter api的格式在时区里只相差一个冒号,问题就很容易解决,在字符串23个字节中加入冒号,然后再进行转换。

1
2
3
4
string created_at = "Fri Jul 16 16:58:46 +0000 2010";
System.Diagnostics.Debug.WriteLine(DateTime.ParseExact(created_at.Insert(23, ":"), "ddd MMM dd HH:mm:ss zzz yyyy", null));
//输出如下
7/17/2010 12:58:46 AM

折腾了一个晚上。。。。。