DateTime和字符串转换问题

DateTime和string之间的相互转换常常碰到,可就这么简单的一个转换其中也有些须要注意的地方.ide

 1         static void Main(string[] args)
 2         {
 3             string format = @"yyyy/MM/dd HH:mm:ss";
 4             DateTimeFormatInfo dtfi = DateTimeFormatInfo.InvariantInfo;
 5 
 6             DateTime dateTime = new DateTime(2014, 11, 2, 17, 30, 00);
 7 
 8             string dateTimeStr1 = dateTime.ToString(format);
 9             string dateTimeStr2 = dateTime.ToString(format, dtfi);
10 
11             Console.WriteLine(Thread.CurrentThread.CurrentCulture.DisplayName);
12             Console.WriteLine(dateTimeStr1);
13             Console.WriteLine(dateTimeStr2);
14 
15             DateTime dateTimeResult;
16             Console.WriteLine(DateTime.TryParseExact(dateTimeStr1, format, null, DateTimeStyles.None, out dateTimeResult));
17             Console.WriteLine(DateTime.TryParseExact(dateTimeStr2, format, dtfi, DateTimeStyles.None, out dateTimeResult));
18 
19             Console.ReadLine();
20         }
View Code

dateTime.ToString(format)若是不传第二个参数,那么将会使用当前线程的区域设置,使格式化的结果依赖于本机的区域设置.spa

DateTime.TryParseExact(dateTimeStr1, format, null, DateTimeStyles.None, out dateTimeResult),第三个参数若是为null,也会使用当前线程的区域设置.线程

因为不能保证全部机器的区域设置都同样,上面两句代码可能会得不到预期的结果.code

能够使用特定的区域设置来解决这个问题,或者直接将转换设置为和区域设置无关,彻底由代码控制.orm

DateTimeFormatInfo dtfi = DateTimeFormatInfo.InvariantInfo;blog

string dateTimeStr2 = dateTime.ToString(format, dtfi);string

DateTime.TryParseExact(dateTimeStr2, format, dtfi, DateTimeStyles.None, out dateTimeResult);it

相关文章
相关标签/搜索