c# - 自定义日期时间格式字符串未按预期工作

标签 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

这是 MSDN doc for custom DateTime format strings .

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

编辑:
示例代码最后一行不正确的地方是连字符而不是斜杠,我不知道为什么。

此外,我的计算机语言设置为英语(加拿大)。但是我的“短”日期格式和“长”日期格式都不像 M-d-yyyy,所以我不知道这是从哪里来的。

最佳答案

/ 是日期分隔符,它依赖于文化 - 在您当前的文化中,它被定义为 -。如果你总是想要一个 / 使用:

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

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

即将您希望“按原样”输出的部分放在引号内。

关于c# - 自定义日期时间格式字符串未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12849727/

相关文章:

java - 将 java.lang.String 转换为 Scala 字符串

java - 方法如何接收字符串作为输入并给出 int 作为输出

c# - 如何强制从抽象类继承的类不使用其基类?

c# - ASP.NET 在发布表单时如何知道先前的输入

python - 如何使用Python根据ascii顺序移动字符

Javascript 比较时间不起作用

c# - 如何在 C# 中将日期与 'T' 转换为字符串/从字符串转换

c# - 在文本框中插入制表符

c# - 为什么这不能从我的文本文件中读取整数?系统格式异常

java - java中无效的日期时间格式