ParseExact和CurrentCulture?

时间:2012-10-09 16:14:07

标签: c# .net datetime

我总是看到这个代码示例,但从来不知道确切的使用时间:

假设我有一个要解析的日期:13 December 2011

可以用

完成
 var g=DateTime.ParseExact("13 December 2011","d MMMM yyyy",CultureInfo.GetCultureInfo("en-US"),DateTimeStyles.None );

 Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US"); 
 var g=DateTime.ParseExact("13 December 2011","d MMMM yyyy",null,DateTimeStyles.None );

两者都提供相同的结果。

我什么时候应该使用哪个?

4 个答案:

答案 0 :(得分:2)

第一个例子将该文化用于该特定操作。

第二个示例将更改正在运行的线程的文化,影响该操作以及受当前文化影响的后续操作,直到线程文化发生更改。

所以请使用适合您情况的那个。

答案 1 :(得分:2)

该解析的结果是相同的,但如果您设置了线程的当前文化,那么这也会影响您稍后执行的任何其他与文化相关的操作。

答案 2 :(得分:1)

应该是第一个。至于第二种情况,如果您使用US使用不同的文化,那么您在当前线程中更改了当前应用程序的当前文化可能会导致错误。

答案 3 :(得分:1)

第一行将使用ParseExact方法中指定的区域性作为第二个参数。即使线索的文化不同,这也将解析en-US文化中的日期。第二个将改变线程的文化,对ParseExact的调用将使用在上一行中设置的新文化。