2012-04-26 22 views
0

我正在嘗試設置的CurrentCulture的LongTimePattern屬性與下面的代碼:CurrentCulture.DateTimeFormat.LongTimePattern只讀

System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat.LongTimePattern = "HH:mm:ss"; 

和我得到InvalidOperationException異常: 實例是隻讀的。

任何想法如何改變它?我想強制LongTimePattern顯示任何文化的24h格式。

回答

3

如果您更改System.Threading.Thread.CurrentThread.CurrentCulture,那麼它將自動更新LongTimePattern。

您不能在當前分配的文化信息中進行任何更新,但創建一個新文件並將其分配給當前文化。

System.Globalization.CultureInfo c = new System.Globalization.CultureInfo("es-ES"); 
c.DateTimeFormat.LongTimePattern = "h-mm-ss"; 
Thread.CurrentThread.CurrentCulture = c; 
+0

謝謝。有用 :) – Ionica 2012-04-26 11:57:08

0

我不確定你是否可以改變文化,讓你這樣做會打敗有文化的目的 - 他們應該以該文化使用的通用格式顯示日期和時間。

如果您希望顯示不同的格式,那麼您始終可以使用自定義日期/時間格式器。

請參閱http://msdn.microsoft.com/en-us/library/az4se3k1.aspx瞭解所有可用的預設格式,以及有關如何顯示自己的格式的詳細信息。

1

如果你只是想改變一個或兩個值,並保持休息一樣,你可以使用克隆來獲得當前文化的可寫副本,如:

CultureInfo i; 
i = (CultureInfo)Thread.CurrentThread.CurrentCulture.Clone(); 
i.DateTimeFormat.LongTimePattern = "HH:mm:ss"; 
i.DateTimeFormat.ShortTimePattern = "HH:mm"; 
Thread.CurrentThread.CurrentCulture = i; 
i = (CultureInfo)Thread.CurrentThread.CurrentUICulture.Clone(); 
i.DateTimeFormat.LongTimePattern = "HH:mm:ss"; 
i.DateTimeFormat.ShortTimePattern = "HH:mm"; 
Thread.CurrentThread.CurrentUICulture = i; 

這似乎更好比不得不使用文化字符串來獲得你的起始文化。