CurrentCulture.DateTimeFormat.LongTimePattern Read-Only

本文关键字:Read-Only LongTimePattern DateTimeFormat CurrentCulture | 更新日期: 2023-09-27 18:32:15

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

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

并且我收到无效操作异常:实例是只读的。

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

CurrentCulture.DateTimeFormat.LongTimePattern Read-Only

如果您更改 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;

如果您只想更改一个或两个值并保持其余值不变,则可以使用 Clone 获取当前区域性的可写副本,例如:

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;

这似乎比必须使用区域性字符串来获取起始区域性要好。

我不确定您是否可以更改区域性,允许您这样做会首先破坏拥有文化的目的 - 它们应该以该文化使用的普遍接受的格式显示日期和时间。

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

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