【发布时间】:2015-11-13 17:45:41
【问题描述】:
我有这个代码:
var ci = new CultureInfo("it-IT", false);
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;
var format = "HH:mm\\:ssZ";
var formatted = DateTime.Now.ToString( format, ci );
and... formatted 在我的机器上恰好是09:08:32Z,它的默认文化不同于“意大利”。 MSDN says 冒号是一个格式说明符,并提供了一个示例,说明如何将未转义的冒号格式化为带有“it-IT”文化的点(我在上面的代码中使用的那个)。
在我的代码中,我有一个冒号字符转义和一个未转义,它们都被格式化为冒号。
为什么会这样?为什么线程当前文化似乎被忽略了?
【问题讨论】:
-
你检查
ci.DateTimeFormat.TimeSeparator的值了吗?它的价值是什么? -
我在 .NET 4.5 上尝试了您的代码,它显示
:为TimeSeparator代表it-IT文化。老实说,我认为您的代码没有任何问题。如果您设置ci.DateTimeFormat.TimeSeparator = ".",您的结果将是.NET 4.5 版本上的09.08:32Z。我没有看它的旧版本,但这些东西可以在 .NET 或 OS 版本上进行更改。
标签: c# .net datetime .net-4.5 string-formatting