.Net中带时区的时间格式转换
在从WMI中获取信息的时候,发现取出的时间格式挺特殊的(比如:20120321112421.535286+540),直接进行DateTime.TryParse转换还不能正常转换,经过调查才知道这是DMTF格式的时间格式。
string s = "20120321112421.535286+540";
Console.WriteLine( ManagementDateTimeConverter.ToDateTime(s));
输出:2012/03/21 10:24:21。(我的电脑设置是中国时区,所以,获取的时间自动转换为了本时区的时间)
还有,有时候从第三方获取数据的时候,返回的时间格式也挺特别(比如:Tue Mar 27 14:17:00 +0900 2012),这也得需要一些自定义的技巧才能正常转换。
string s = "Tue Mar 27 14:17:00 +0900 2012";
DateTime.TryParseExact(s, "ddd MMM dd HH:mm:ss zzz yyyy", System.Globalization.CultureInfo.CreateSpecificCulture("en-US"),
System.Globalization.DateTimeStyles.None, out dt);
Console.WriteLine(dt);
输出:2012/03/27 13:17:00
参考资料:
DMTF时间转换:http://msdn.microsoft.com/zh-cn/library/system.management.managementdatetimeconverter.aspx
自定义时间格式:http://msdn.microsoft.com/zh-cn/library/8kb3ddd4.aspx