DateTime.ToString 格式表达式是否受当前文化区域设置的影响?

blu*_*utt 4 .net c# string datetime locale

我有一些代码从胖客户端应用程序中以格式记录时间戳

DateTime.UtcNow.ToString("MM/dd/yy HH:mm:ss")
Run Code Online (Sandbox Code Playgroud)

现在,在中国运行的客户端上(不确定确切的语言环境),这会在日志中生成一个日期格式为

11-20-13 02:14:03
Run Code Online (Sandbox Code Playgroud)

我注意到它使用 - 而不是 / 来分隔部分,即使我明确想要 /

我尝试将当前文化设置为简体中文 zh-CN,但无法重现远程客户端如何生成该字符串

当前的文化语言环境是否会影响此格式字符串的输出?或者/有我不知道的其他含义吗?

p.s*_*w.g 5

是的,该/字符是当前文化用来分隔日期部分的任何内容的占位符。从MSDN

“/”自定义格式说明符表示日期分隔符,用于区分年、月和日。从当前或指定区域性的 DateTimeFormatInfo.DateSeparator 属性中检索适当的本地化日期分隔符。

与其他格式说明符,你可以摆脱/一个\

DateTime.UtcNow.ToString(@"MM\/dd\/yy HH\:mm\:ss")
Run Code Online (Sandbox Code Playgroud)

或者在格式化字符串时指定显式区域性:

DateTime.UtcNow.ToString("MM/dd/yy HH:mm:ss", CultureInfo.InvariantCulture)
Run Code Online (Sandbox Code Playgroud)