我有这段代码:
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 );
和...格式恰好在我的机器上09:08:32Z
,其默认文化与"意大利"不同。 MSDN says冒号是一个格式说明符,并提供了一个样本,说明如何将未转义的冒号格式化为带有" it-IT"的点。文化(我在上面的代码中所拥有的)。
在我的代码中,我有一个冒号转义,一个没有转义,它们都被格式化为冒号。
为什么会这样?为什么线程当前的文化似乎被忽略了?
答案 0 :(得分:1)
“it-IT”文化的时间分隔符是冒号,您可以查看是否选中ci.DateTimeFormat.TimeSeparator
。我想MSDN文档是错误的。
如果确实需要,您可以随时手动更改时间分隔符(ci.DateTimeFormat.TimeSeparator = "."
)。
编辑:正如评论中所述,似乎是the time separator for the it-IT culture was a dot in .NET 3.5, but was changed to a colon in .NET 4.0。