2012-10-09 22 views
0

我總是看到這個代碼示例,但永遠不知道什麼時候該使用哪個:ParseExact和CurrentCulture?

假設我有一個日期解析: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); 

兩者都提供相同的結果。

什麼時候應該使用哪個?

回答

2

第一個示例將針對該特定操作使用該文化。

第二個示例將更改正在運行的線程的文化,影響該操作以及受當前文化影響的後續操作,直到線程文化發生更改。

因此,請使用適合您情況的產品。

1

它應該是第一個。至於第二種,如果您在US中使用不同的文化,則您在當前線程中更改了應用程序的當前文化可能會導致錯誤。

2

該解析的結果是相同的,但是如果您設置了線程的當前文化,那麼也會影響您以後執行的任何其他依賴於文化的操作。

1

第一行將使用在ParseExact方法中指定的文化作爲第二個參數。即使線程的文化不同,這也會在en-US文化中解析日期。第二個將改變線程的文化,ParseExact的調用將使用在前一行中設置的新文化。

相關問題