CurrentCulture.DateTimeFormat.LongTimePattern只读

时间:2012-04-26 11:00:01

标签: c# datetime time format readonly

我正在尝试使用以下代码设置CurrentCulture的LongTimePattern属性:

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

我得到InvalidOperationException: 实例是只读的。

知道如何更改它?我想强制LongTimePattern显示任何文化的24小时格式。

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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;

这似乎比使用文化字符串来获得你的起始文化更好。

答案 2 :(得分:0)

我不确定你是否可以改变文化,允许你这样做会破坏文化的目的 - 他们应该以该文化所使用的普遍接受的格式显示日期和时间。 / p>

如果您希望显示不同的格式,则可以始终使用自定义日期/时间格式化程序。

有关所有可用的预设格式,请参阅http://msdn.microsoft.com/en-us/library/az4se3k1.aspx,以及有关如何显示自己格式的详细信息。