自定义DateTime格式字符串无法按预期工作

Jes*_*ebb 8 c# string datetime .net-4.0 datetime-format

我有一个自定义DateTime格式字符串:"M/d/yyyy h:m:ss tt".

例如,日期为'2012年9月18日@中午',我希望它的输出类似于"9/18/2012 12:0:00 PM".

时间似乎正确格式化,但日期部分搞砸了.我看到日期格式化"MM-dd-yyyy",我无法弄清楚为什么.

以下是一些重现问题的示例代码:

var datetime = DateTime.Now;
Console.WriteLine("Date: " + datetime.ToString("MMMM d, yyyy"));       // Date: October 11, 2012 --> correct
Console.WriteLine("Date: " + datetime.ToString("M/d/yyyy h:m:ss tt")); // Date: 10-11-2012 4:34:17 PM --> wrong
Run Code Online (Sandbox Code Playgroud)

以下是自定义DateTime格式字符串MSDN文档.

关于我做错什么的任何想法?我怎样才能达到理想的效果?

编辑:
示例代码的最后一行中不正确的是有连字符而不是斜线,我不知道为什么.

此外,我的计算机语言设置为英语(加拿大).但是我的"短"或"长"日期格式看起来都不是M-d-yyyy这样,我不知道它来自哪里.

MiM*_*iMo 17

/是日期分隔符,它取决于文化 - 在您当前的文化中它被定义为-.如果你想要一直/使用:

Console.WriteLine("Date: " + datetime.ToString("M\"/\"d\"/\"yyyy h:m:ss tt"));
Run Code Online (Sandbox Code Playgroud)

要么

Console.WriteLine("Date: " + datetime.ToString("M'/'d'/'yyyy h:m:ss tt"));
Run Code Online (Sandbox Code Playgroud)

即将要输出的部分"按原样"放在引号内.


lah*_*rah 13

尝试:

datetime.ToString("M/d/yyyy h:m:ss tt", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

您的文化可能会覆盖您的日期分隔符.